2010-10-10 8 views
3

J'essaie de comprendre ce qui cause ce plantage. J'ai construit et donné l'application à nos testeurs, mais nous ne pouvons pas sembler reproduire cela de manière fiable. Il arrive juste parfois ...App Crashing dans NSURLConnection

Thread 0 Crashed: 
0 libobjc.A.dylib    0x000027da objc_msgSend + 18 
1 Foundation      0x00032896 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 62 
2 Foundation      0x00032818 _NSURLConnectionDidFinishLoading + 72 
3 CFNetwork      0x00010dd8 URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 160 
4 CFNetwork      0x00004ad4 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 96 
5 CFNetwork      0x000049c4 URLConnectionClient::processEvents() + 64 
6 CFNetwork      0x00004976 URLConnection::multiplexerClientPerform(RunLoopMultiplexer*) + 30 
7 CFNetwork      0x000048f4 MultiplexerSource::perform() + 120 
8 CFNetwork      0x00004872 MultiplexerSource::_perform(void*) + 2 
9 CoreFoundation     0x00055f1e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6 
10 CoreFoundation     0x00027ba0 __CFRunLoopDoSources0 + 376 
11 CoreFoundation     0x00027444 __CFRunLoopRun + 224 
12 CoreFoundation     0x00027270 CFRunLoopRunSpecific + 224 
13 CoreFoundation     0x00027178 CFRunLoopRunInMode + 52 
14 GraphicsServices    0x000045ec GSEventRunModal + 108 
15 GraphicsServices    0x00004698 GSEventRun + 56 
16 UIKit       0x0000411c -[UIApplication _run] + 396 
17 UIKit       0x00002128 UIApplicationMain + 664 
18 myapp       0x000020d8 main (main.m:14) 
19 myapp       0x0000208c start + 32 

Un conseil serait grandement apprécié. L'application est construite en XCode 3.2.4 en utilisant SDK 4.1.

... Vive

Répondre

1

Ben a quelques conseils judicieux. Activez NSZombieEnabled.

Je peux vous dire avec presque 100% de certitude qu'il se bloque parce que vous avez un objet nul lorsque le délégué tente de lui envoyer un message.

Le fait qu'il ne s'écrase que de temps en temps, me dit que vous utilisez probablement autorelease. Autorelease ne décrémente jamais le nombre de retenues exactement au même moment. Il arrive que votre objet soit toujours vivant lorsqu'il reçoit un message de délégué et que l'application fonctionne. Cependant, parfois cet objet aura été publié et l'application se bloque.

+0

Le crash était parce que l'objet a été libéré et ensuite la mémoire a été récupérée. Dans mon code, j'essayais d'appeler le délégué respondsToSelector: mais maintenant le délégué était en fait un type primitif qui n'adopte pas le protocole NSObject, donc il était incapable de gérer le message. – nicktmro

2

Je voudrais essayer d'allumer NSZombieEnabled et voir si cela jette une lumière sur la question. Le délégué pour la connexion est-il toujours valide et valide?

+0

Vous savez, cela devrait vraiment être un commentaire. –

+0

Merci les gars, la chose est ce crash se produit sur les appareils des gens plutôt que dans le simulateur ... – nicktmro

+0

La détection de zombies peut encore aider. Comme l'a dit Ben, il semble que votre délégué pour le NSURLConnection ne soit plus valide. –