2010-06-19 6 views
1

Je suis novice en Objective-C et mes compétences en gestion de la mémoire ne sont pas géniales. Cependant, je n'ai pas eu un seul problème jusqu'à présent. Et maintenant j'ai de gros problèmes. Je suis passé de zéro à l'écrasement à des points aléatoires, ne me donnant aucune sortie de console ou des erreurs de sélection non reconnues sur les types aléatoires (-[NSCFSet isSameAsStop:]: unrecognized selector - Je n'utilise même pas de jeux et je n'ai sûrement pas appelé mon isSameAsStop personnalisé sur tous les ensembles.). A en juger par le hasard et les erreurs, cela me semble une chose de mémoire bien que je ne sois pas tout à fait sûr.Comment déboguer des problèmes étranges de gestion de la mémoire dans Xcode/Objective-C?

Comment procéder pour le débogage? Le débogueur suppose que vous connaissez votre problème est ... et le mien est juste partout. Des idées?

SOLUTION COMMENTAIRE

Quelques précisions sur la suggestion de solution à "exécuter avec détection de zombie activé":

  • Réglez le NSZombieEnabled YES sur la Exécutables de l'écran Arguments.
  • Créez, puis choisissez Exécuter avec l'outil Performance> Allocations d'objets, qui lancera Instruments.
  • Cliquez sur le bouton "i" sur Attribution d'objet dans Instr. et sélectionnez la détection des zombies et retenez les comptes. Réexécutez et cliquez dans votre application, il vous dira quand vous frappez un zombie!

Merci pour l'aide!

Répondre

6

Vous avez un bug de version classique sur vos mains. Quelque part, vous relâchez trop une instance de la classe qui implémente isSameAsStop et il se trouve qu'une instance NSSet est allouée au même endroit après la désallocation de l'instance d'origine.

La première étape consiste à «construire et analyser» votre code, en corrigeant tous les problèmes détectés par l'analyseur statique.

L'étape suivante consiste à exécuter ensuite la détection zombie activée.

+0

C'est une bonne idée de définir l'option "Exécuter l'analyseur statique" dans les paramètres de construction de votre projet. De cette façon, vous obtiendrez une analyse statique chaque fois que vous construisez votre projet. – JeremyP

+0

où est la détection de zombie dans xcode? –

+0

Configurez l'instrument Allocations, il y a une case à cocher pour le suivi des zombies. Je crois que la même chose existe également dans l'éditeur de schéma. Et ce que @indragie a dit; utilisez Build et Analyze aussi. – bbum

0

Dans Xcode: menu Générer >> Construire et analyser

trouve un grand nombre de problèmes de gestion de la mémoire commune.