2014-07-10 8 views
8

Kann mir jemand bestätigen, dass der folgende Absturzbericht generiert wird, weil SKProductsRequestDelegate noch zugewiesen wird, obwohl der Code selbst nicht vorhanden ist? d.h. der VC wurde geschlossen?iOS-Absturzbericht 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 

Wenn mein Denken richtig ist, kann ich dieses Problem beheben durch den Aufruf: -

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

Wenn ich falsch bin, jemand etwas mehr Licht auf das für mich vergießen könnte?

Danke.

Antwort

17

Für ref, meine Zugabe des folgenden Codes hat tatsächlich das Problem behoben.

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

Woher hast du das? Verstehe nicht. – lespommes

+2

Fügen Sie es hinzu, wenn die Klasse entfernt wird, also viewWillDisappear, dealloc oder irgendein Hintergrund. – MrNeilM

+0

Ah du hast es verstanden. Irgendwann wurde mir klar, dass sich das Objekt gerade auflöst, während der Anruf getätigt wurde, also habe ich es verschoben. Vielen Dank! – lespommes