【发布时间】:2011-08-22 11:06:24
【问题描述】:
为我的应用内购买运行测试(第一次进行应用内购买)。我在这段代码的第三行得到 EXC_BAD_ACCESS:
SKPayment *payment = [SKPayment paymentWithProduct:electronicProd];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
在按钮的 IBAction 下。 electronicPack 在标头中声明为 SKProduct。在 productsRequest didReceiveResponse 中抛出了一些 NSLog,当产品被请求时(在 viewDidLoad 中),它们表明它正确地获取了产品并将其存储在 electronicPack 中。在 didReceiveResponse 页面中将 electronicPack 定义为 [[request.products] objectAtIndex:0]。所以是的。这就是我所在的地方,不知道该怎么办。任何帮助表示赞赏。
更新:FIXED 意外遗留在添加额外事务观察器的代码中,哈哈
【问题讨论】:
-
在electronicProd定义中,你调用retain消息了吗?每个事件都包装在一个自动释放池中,如果你用它的静态 init 方法实例化你的对象,一旦 viewDidLoad 方法结束,项目就会被释放。
-
你问我是否喜欢:electronicPack = [SKProduct alloc] init]?答案是否定的。如果那不是你要问的,那么我不确定你在说什么,我对这个球赛有点陌生。大声笑
-
我对整个内存管理和属性的东西不太好。以及所有这些。只编程了大约一个月,还没有完全掌握它。我会尝试一下,看看它是否能解决任何问题 编辑:实施了 self.elec..etc 的东西,没有任何改变。仍然出错
-
当应用程序崩溃时,在 gdb 窗口中输入 t a a bt (thread apply all bt) 并告诉我们您的想法
-
好的,你用的是静态方法,我会回复的,这样就更清楚了。
标签: iphone objective-c xcode in-app-purchase storekit