iphone – 在应用程序购买测试期间的EXC_BAD_ACCESS

为我的应用程序购买运行测试(第一次在应用程序购买)。我在这段代码的第三行得到EXC_BAD_ACCESS:

SKPayment *payment = [SKPayment paymentWithProduct:electronicProd];
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] addPayment:payment];

这是一个按钮的IBAction。电子邮箱在标题中声明为SKProduct。在productsRequest didReceiveResponse中提供了一些NSLogs,当请求产品(在viewDidLoad中)时,它们显示正确地获取产品并将其存储在electronicPack中。在didReceiveResponse页面中定义为[[request.products] objectAtIndex:0]的电子邮件。那么是啊这些在哪里,不知道该怎么办任何帮助是赞赏。

更新:FIXED意外地留下了在添加一个额外的事务观察者哈哈的代码

解决方法

您需要保留您正在创建的对象

- (void)viewDidLoad {
   //... stuff
   SKProduct* electronicProduct = //...
   [electronicProduct retain];
   //... otherstuff
}

viewDidLoad被系统包装在自动释放池中,paymentWithProduct:返回一个自动释放对象。当viewDidLoad完成后,所有的autorelease对象都被释放,这就是为什么当你尝试访问它时,你的内存访问不佳。

相关文章

在有效期内的苹果开发者账号(类型为个人或者公司账号)。还...
Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台...
苹果在9月13号凌晨(北京时间)发布 iOS 16,该系统的设备可...
计算机图形学--OpenGL递归实现光线追踪
Xcode 14打出来的包在低版本系统运行时会崩溃,报错信息是Li...