Ios 应用内购买:视图消失时崩溃
我的应用程序有一个包含4个视图控制器的选项卡栏。第三个视图控制器包含“应用程序内商店购买”。在这个控制器中,我使用一个管理应用程序内购买(产品请求、购买、交易等)的对象,该对象允许我获取并显示价格描述ecc 问题是:如果我在请求启动时更改选项卡,应用程序有时会崩溃,但并非总是如此 我必须取消视图中的请求吗?Ios 应用内购买:视图消失时崩溃,ios,objective-c,in-app-purchase,Ios,Objective C,In App Purchase,我的应用程序有一个包含4个视图控制器的选项卡栏。第三个视图控制器包含“应用程序内商店购买”。在这个控制器中,我使用一个管理应用程序内购买(产品请求、购买、交易等)的对象,该对象允许我获取并显示价格描述ecc 问题是:如果我在请求启动时更改选项卡,应用程序有时会崩溃,但并非总是如此 我必须取消视图中的请求吗? [productsRequest cancel]此代码崩溃 您的问题可能与应用内购买无关。在代码的某个地方,您正在向已释放的对象发送消息。运行分析器可以帮助您找到bug,但这次可能没有必要。
[productsRequest cancel]此代码崩溃 您的问题可能与应用内购买无关。在代码的某个地方,您正在向已释放的对象发送消息。运行分析器可以帮助您找到bug,但这次可能没有必要。如果[productsRequest cancel]崩溃,则productsRequest的保留计数可能太低。在您的
视图消失时,删除TransactionObserver
:
[[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
如果从Inapp viewcontroller返回到另一个viewcontroller,则
[[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
[self dismissViewControllerAnimated:YES completion:NULL];
我也有同样的问题。
若要修复它,请取消请求,然后一切正常
var request: SKProductsRequest! //global to cancel when disappear
//request products when you want (viewDidLoad for example)
request = SKProductsRequest(productIdentifiers: productID as! Set<String>)
request.delegate = self
request.start()
我也有同样的问题。这是一个苹果错误,因为他们实现了强制委托。
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
request.delegate = nil;
request.cancel()
SKPaymentQueue.defaultQueue().removeTransactionObserver(self)
}