2011-01-26 3 views
0

J'ai besoin d'un indice sur l'endroit où chercher pour détecter les causes d'un crash avec le message EXC_BAD_ACCESS, qui devrait être lié aux questions "retain-release". Cela arrive dans un moment APRÈS l'événement viewDidAppear.iPhone EXC_BAD_ACCESS après l'événement viewDidAppear

0 0x01285a63 in objc_msgSend 
1 0x0580e400 in ?? 
2 0x0105fb8d in _ CFAutoreleasePoolPop 
3 0x00022443 in -[NSAutoreleasePool release] 
4 0x002d3bf2 in _ UIApplicationHandleEvent 
5 0x018cca36 in PurpleEventCallback 
6 0x01105064 in __ CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ 
7 0x010656f7 in __CFRunLoopDoSource1 
8 0x01062983 in __CFRunLoopRun 
9 0x01062240 in CFRunLoopRunSpecific 
10 0x01062161 in CFRunLoopRunInMode 
11 0x002cafa8 in -[UIApplication _run] 
12 0x002d742e in UIApplicationMain 
13 0x00001ca0 in main at main.m:14 

La chose étrange est qu'il ne arrive toujours, juste parfois; J'ai vérifié l'ensemble de la classe qui a été lancée, mais je ne vois rien qui puisse causer ce problème. En plus de cela, si je creuse pas à pas avec le débogueur, il semble que le problème ne se produit jamais, peut-être un problème de simulateur?

Répondre

3

Il me semble que le groupe autorelease essaie de libérer un objet qui est déjà désalloué. Je suppose que NSZombie aiderait à trouver l'objet en question.

EDIT: Pour activer NSZombie procédez comme suit:

  1. Informez-vous sur de l'exécutable.
  2. Accédez à l'onglet arguments.
  3. Dans la section « Variables à l'environnement: » ajouter section:

Nom: NSZombieEnabled Valeur: OUI

Lancez ensuite votre application comme d'habitude et quand il tombe en panne, il devrait vous dire que L'objet désalloué a reçu le message de libération.

+0

Le message n'était pas si détaillé, mais il a fait le travail, j'ai réussi à trouver le problème. Je vous remercie. – IssamTP

3

Pas une réponse, mais un conseil - compilez l'application pour le simulateur, lancez les Instruments et ajoutez l'outil d'allocation de mémoire avec "NSZombies enabled" de la bibliothèque. Exécutez l'application dans des instruments jusqu'à ce que vous obteniez un avis sur le message envoyé à l'objet zombie.

+0

Merci, le Zombie a fait le travail :) – IssamTP

Questions connexes