我的應用程序有一個包含4個視圖控制器的tabbar。第三個視圖控制器包含「存儲應用內購買」。在此控制器中,我使用管理應用內購買(產品請求,購買,交易等)的對象,這些對象允許我獲取並顯示價格描述ecc。應用內購買:視圖消失時崩潰
問題是:如果我在更改標籤的同時請求啓動,應用程序有時會崩潰,但並非總是如此。
我必須在viewDidDisappear中取消請求嗎? [productsRequest取消]此代碼崩潰。
我的應用程序有一個包含4個視圖控制器的tabbar。第三個視圖控制器包含「存儲應用內購買」。在此控制器中,我使用管理應用內購買(產品請求,購買,交易等)的對象,這些對象允許我獲取並顯示價格描述ecc。應用內購買:視圖消失時崩潰
問題是:如果我在更改標籤的同時請求啓動,應用程序有時會崩潰,但並非總是如此。
我必須在viewDidDisappear中取消請求嗎? [productsRequest取消]此代碼崩潰。
您的問題可能與應用內購買無關。在你的代碼中的某個地方,你正在發送一條消息給一個已經發布的對象。運行分析器可以幫助您找到該錯誤,但這次可能不需要。如果[productsRequest cancel]崩潰,那麼產品請求的保留計數可能太低。
取出TransactionObserver
,而你viewDidDisappear
:
[[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
如果你去從應用程式內的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()
當disapear視圖 - 控制:
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
request.delegate = nil;
request.cancel()
SKPaymentQueue.defaultQueue().removeTransactionObserver(self)
}
我有同樣的問題。這是一個蘋果的錯誤,因爲他們實施強制委託。 –