2015-10-29 3 views
0

je suis arrivé un accident de Fabric, la pile est inférieure à:Crash at _CFAutoreleasePoolPop

Thread : Crashed: com.apple.main-thread 
0 libobjc.A.dylib    6806634868 objc_release + 20 
1 libsystem_blocks.dylib   6813456656 _Block_release + 256 
2 libobjc.A.dylib    6806640420 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 564 
3 CoreFoundation     6529519172 _CFAutoreleasePoolPop + 28 
4 UIKit       6605817924 _wrapRunLoopWithAutoreleasePoolHandler + 76 
5 CoreFoundation     6530394704 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 
6 CoreFoundation     6530382300 __CFRunLoopDoObservers + 360 
7 CoreFoundation     6530383292 __CFRunLoopRun + 836 
8 CoreFoundation     6529519780 CFRunLoopRunSpecific + 396 
9 GraphicsServices    6682260900 GSEventRunModal + 168 
10 UIKit       6606283712 UIApplicationMain + 1488 
11 Spec       4297532060 main (main.m:15) 
12 libdyld.dylib     6813280776 start + 4 

Je ne sais pas pourquoi il serait _Block_release après (anonymous namespace)::AutoreleasePoolPage::pop(void*). Est-il possible qu'un bloc a été ajouté à autoreleasepool? Si possible, pourquoi le bloc s'est écrasé à la libération et il ne s'est pas écrasé à invoke?

+0

Essayez de déboguer en utilisant des zombies – newacct

+0

@newacct Nous ne savions pas quand et pourquoi ce bug arriverait. Donc je ne peux pas le déboguer avec Xcode en utilisant des zombies. – user2027712

Répondre

1

Ok, j'avais résoudre ce bug.La raison de l'accident était que je devais accrocher la fonction objectAtIndex pour NSMutableArray.And Si l'utilisateur passe de l'arrière-plan, l'application obtiendrait un plantage -[UIKeyboardLayoutStar release]: message sent to deallocated. Alors, retirez le code du crochet pour résoudre ce bug.

+0

vous pouvez avoir une autre solution. Définissez votre fichier à l'endroit où vous accrochez les drapeaux du compilateur de la méthode 'NSMutableArray'' '-fno-objc-arc'. Puis reconstruisez votre projet. Vous pouvez confirmer la question. –