iOS   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 修改NSObjects的内部属性(特别是SKPaymentTransaction)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试对收据验证服务器进行单元测试,然我可以更改内部API以避免此问题,但这意味着我们没有完全测试客户端API,所以我想避免这种情况. 作为API的一部分,我们通过SKPaymenttransaction,然后将transaction.transactionReceipt传递给我们的服务器. 为了正确测试,我想用我选择的transactionReceipt创建一个SKPaymentTrans
我正在尝试对收据验证服务器进行单元测试,然我可以更改内部API以避免此问题,但这意味着我们没有完全测试客户端API,所以我想避免这种情况.

作为API的一部分,我们通过SKPaymenttransaction,然后将transaction.transactionReceipt传递给我们的服务器.

为了正确测试,我想用我选择的transactionReceipt创建一个SKPaymenttransaction实例(有效值和无效值).

不幸的是,SKPaymenttransaction将transactionReceipt属性定义为只读,并且由于this,我无法声明将其定义为readwrite的扩展/子类.

我似乎也无法将SKPaymenttransaction指针强制转换为char *来手动将值注入内存,因为Xcode不允许在ARC下使用它.

有没有人知道我如何才能达到我想要的目标?

谢谢
背风处

@H_502_23@解决方法
结果我可以调用transactionReceipt getter将我自己的数据注入到调用中.

所以我最终得到了类似的东西

-(void)test_function
{
    SKPaymenttransaction* invalidtransaction = [[SKPaymenttransaction alloc] init];

    Method swizzledMethod = class_geTinstanceMethod([self class],@SELEctor(replaced_gettransactionReceipt));
    Method originalMethod = class_geTinstanceMethod([invalidtransaction class],@SELEctor(transactionReceipt));

    method_exchangeImplementations(originalMethod,swizzledMethod);

    // Call to receipt verification server
}

- (NSData*)replaced_gettransactionReceipt
{
    return [@"blah" dataUsingEncoding:NSUTF8StringEncoding];
}

我写了一篇博文,展示了我的过程,并在这里给出了更多细节.
http://engineering-game-dev.com/2014/07/23/injecting-data-into-obj-c-readonly-properties/

大佬总结

以上是大佬教程为你收集整理的ios – 修改NSObjects的内部属性(特别是SKPaymentTransaction)全部内容,希望文章能够帮你解决ios – 修改NSObjects的内部属性(特别是SKPaymentTransaction)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。