Comment puis-je configurer NSZombieEnabled dans Xcode 4?
Comment puis-je configurer NSZombieEnabled
et CFZombieLevel
pour mon exécutable dans Xcode 4?
- êtes-vous demander à propos de Xcode 4?
- Pourquoi les options comme ce n'est pas activée par défaut est au delà de moi...
- Parce que fondamentalement, ça empêche toute véritable libération de mémoire, ce qui ne semble pas être une bonne idée d'activer par défaut.
- Magnusson: c'est la survie des plus aptes chose. En faisant du développement avec XCode hostile mais réalisable, vous obtenez de meilleurs devs. C'est juste une blague.
- Je pense que ce n'est pas une mauvaise idée, autant que je sache, le "Zombie" mode change chaque objet à un type particulier ob objet de sorte qu'il peut détecter, lorsqu'il reçoit des messages envoyés. Donc, avoir "mode Zombie" est activée, la cause qu'aucun objet ne sera jamais libéré, de sorte que vous devriez vraiment utilisé lors de la lutte contre de telles erreurs.
Vous devez vous connecter pour publier un commentaire.
Dans Xcode 4.x appuyez sur
⌥⌘R
(ou cliquez sur
Menubar
>Product
>Scheme
>Edit Scheme
)sélectionnez le "Diagnostic" de l'onglet et cliquez sur "Activer Zombie Objets":
Ce transforme les objets publiés dans NSZombie instances d'impression de la console d'avertissements lorsque les utiliser de nouveau. C'est un débogage aide qui augmente l'utilisation de la mémoire (aucun objet n'est vraiment sorti) mais améliore le rapport d'erreurs.
Un cas typique est lorsque vous relâchez un objet et vous ne savez pas lequel:
-[UITableView release]: message sent to deallocated instance
Ce Xcode paramètre est ignoré lorsque vous archivez l'application de l'App Store de soumission. Vous n'avez pas besoin de toucher à rien avant de publier votre application.
Appuyant sur ⌥⌘R est la même que la sélection de Produit > Exécuter tout en gardant l' Alt enfoncée.
En cliquant sur "Activer Zombie Objets" case à cocher est le même que l'ajout manuel d' "NSZombieEnabled = OUI" dans la section "Variables d'Environnement" de l'onglet Arguments.
CMD-<
(CMD-SHIFT-comma
), ouProduct -> Scheme -> Edit SCheme...
Jano la réponse est le moyen le plus facile à trouver.. une autre façon serait si vous cliquez sur le régime de liste déroulante de la barre -> modifier le système -> les arguments de l'onglet, puis ajouter NSZombieEnabled dans les Variables d'Environnement de la colonne et OUI dans la colonne valeur...
Je trouve cette solution plus pratique:
Profile
Zombies
Dès qu'un zombie est détecté, vous obtenez alors un pur "Zombie Pile" qui vous indique quand l'objet en question a été affecté et où il a été retenu ou sortie:
Avantages par rapport à l'utilisation du diagnostic de l'onglet Xcode Régimes:
Si vous avez oublié de décocher l'option dans le diagnostic de l'onglet il y a pas d'objets sera libéré de la mémoire.
Vous obtenez une vue plus détaillée de pile qui vous montre quelles sont les méthodes de votre corrompus objet a été alloué /publié ou conservés.
iOS Simulator > All
de la principale liste de modèles (Vous pouvez faire cela seulement dans le simulateur)Dans Xcode 4.2
Dans Xcode 7
⌘<
ou sélectionnez
Edit Scheme
deProduct
>Scheme
Menusélectionnez
Enable Zombie Objects
forme laDiagnostics
ongletComme alternative, si vous préférez
.xcconfig
de fichiers, vous pouvez lire cet article https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/Cacao offre une fonctionnalité qui améliore considérablement vos capacités de débogage de telles situations. C'est une variable d'environnement qui est appelé NSZombieEnabled, cette montre de vidéo qui explique la configuration de NSZombieEnabled en objective-C
Dans Xcode > 4.3:
Vous cliquez sur le régime de liste déroulante de la barre -> modifier le système -> les arguments de l'onglet, puis ajouter NSZombieEnabled dans les Variables d'Environnement de la colonne et OUI dans la colonne valeur.
Bonne Chance !!!