2014-07-10 100 views
8

有人可以證實我的想法,即由於SKProductsRequestDelegate仍在被分配而生成以下崩潰報告,但代碼本身不是?即風險投資已關閉?iOS崩潰報告SKProductsRequest

StoreKit: __34-[SKProductsRequest _handleReply:]_block_invoke + 442 

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Subtype: KERN_INVALID_ADDRESS at 0x41682340 
Triggered by Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib     0x38d19626 objc_msgSend + 6 
1 StoreKit      0x30c4784a __34-[SKProductsRequest _handleReply:]_block_invoke + 442 
2 libdispatch.dylib    0x391f7830 _dispatch_call_block_and_release + 8 
3 libdispatch.dylib    0x391f781c _dispatch_client_callout + 20 
4 libdispatch.dylib    0x391fe49a _dispatch_main_queue_callback_4CF$VARIANT$mp + 274 
5 CoreFoundation     0x2e45f89c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4 
6 CoreFoundation     0x2e45e170 __CFRunLoopRun + 1296 
7 CoreFoundation     0x2e3c8eba CFRunLoopRunSpecific + 518 
8 CoreFoundation     0x2e3c8c9e CFRunLoopRunInMode + 102 
9 GraphicsServices    0x3332265e GSEventRunModal + 134 
10 UIKit       0x30d15148 UIApplicationMain + 1132 
11 BaseApp       0x00035aea 0x2c000 + 39658 
12 libdyld.dylib     0x3921cab4 start + 0 

如果我的想法是正確的,我可以通過調用解決此問題: -

request.delegate = nil; 
[request cancel]; 
request = nil; 

如果我不正確,可能有人闡明一些更多的光線這對我來說?

謝謝。

回答

17

對於ref,我添加了下面的代碼確實糾正了這個問題。

request.delegate = nil; 
[request cancel]; 
request = nil; 
+0

你把它放在哪裏?不明白。 – lespommes

+2

添加它作爲類被刪除,所以viewWillDisappear,dealloc,或任何背景。 – MrNeilM

+0

啊,我知道了。最終我意識到,在調用正在進行時,對象只是釋放,因此我將其移除。謝謝! – lespommes