我遇到了实施InAppPurchase的麻烦。我的购买实现是在模态视图控制器(AppUpgradeViewController)中,我从另一个模态视图呈现。我不喜欢这样写道:iPhone - SKProductsRequest和“发送到释放实例的消息”
AppUpgradeViewController * appUpgradeViewController = [[AppUpgradeViewController alloc] init];
appUpgradeViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
appUpgradeViewController.delegate = self;
[self presentModalViewController:appUpgradeViewController animated:YES];
[appUpgradeViewController release];
然后,在我的升级鉴于我做到以下几点:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
NSSet *productIdentifiers = [NSSet setWithObject:kInAppPurchaseProUpgradeProductId];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[productsRequest start];
然后,我已经实现了
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
,我做的事:
[self.productsRequest release];
然后我有其他所需的方法。
问题是当我展示模式,并迅速关闭它,然后几秒钟后我上的控制台下面(我打开NSZombieEnabled):
*** -[AppUpgradeViewController respondsToSelector:]: message sent to deallocated instance 0x2e91f0
我想,这件事情与该产品的要求,但我不知道如何调试或修复它。似乎请求的答案是在它被解散(和释放)之后才发送给这个控制器,但我不知道如何阻止它在dismiss/dealloc之后接收消息。 感谢您的帮助!
我有同样的问题,但以下解决方案都不适用于我。我启用了ARC。有什么建议么? – mvb 2012-08-11 07:10:56