Comment configurer NSZombieEnabled
et CFZombieLevel
pour mon exécutable dans Xcode 4?
objective-c
xcode
xcode4
nszombie
Chétan
la source
la source
Réponses:
Dans Xcode 4.x, appuyez sur
⌥⌘R
(ou cliquez sur
Menubar
>Product
>Scheme
>Edit Scheme
)sélectionnez l'onglet "Diagnostics" et cliquez sur "Activer les objets Zombie":
Cela transforme les objets libérés en instances NSZombie qui affichent des avertissements de la console lorsqu'ils sont réutilisés. Il s'agit d'une aide au débogage qui augmente l'utilisation de la mémoire (aucun objet n'est vraiment libéré) mais améliore le rapport d'erreurs.
Un cas typique est lorsque vous relâchez un objet et que vous ne savez pas lequel:
-[UITableView release]: message sent to deallocated instance
Ce paramètre Xcode est ignoré lorsque vous archivez l'application pour la soumission sur l'App Store. Vous n'avez rien à toucher avant de lancer votre application.
Appuyez sur ⌥⌘Rrevient à sélectionner Produit> Exécuter tout en maintenant la Alttouche enfoncée.
Cliquer sur la case "Activer les objets Zombie" revient à ajouter manuellement "NSZombieEnabled = YES" dans la section "Variables d'environnement" de l'onglet Arguments.
la source
CMD-<
(CMD-SHIFT-comma
), ouProduct -> Scheme -> Edit SCheme...
La réponse de Jano est le moyen le plus simple de le trouver. Une autre façon serait de cliquer sur la barre déroulante du schéma -> modifier le schéma -> onglet arguments, puis d'ajouter NSZombieEnabled dans la colonne Variables d'environnement et OUI dans la colonne des valeurs ...
la source
Je trouve cette alternative plus pratique:
Profile
Zombies
Dès qu'un zombie est détecté, vous obtenez une "pile de zombies" soignée qui vous montre quand l'objet en question a été alloué et où il a été conservé ou libéré:
Avantages par rapport à l'utilisation de l'onglet de diagnostic des schémas Xcode :
Si vous oubliez de décocher l'option dans l'onglet diagnostic, aucun objet ne sera libéré de la mémoire.
Vous obtenez une pile plus détaillée qui vous montre dans quelles méthodes votre objet corrompu a été alloué / libéré ou conservé.
la source
iOS Simulator > All
dans la liste principale des modèles (vous ne pouvez le faire que dans le simulateur)Dans Xcode 4.2
la source
Activé Dans Xcode 7
⌘<
ou sélectionnez
Edit Scheme
dansProduct
>Scheme
Menusélectionnez dans
Enable Zombie Objects
l'Diagnostics
ongletComme alternative, si vous préférez les
.xcconfig
fichiers, vous pouvez lire cet article https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/la source
Cocoa offre une fonctionnalité intéressante qui améliore considérablement vos capacités de débogage de telles situations. Il s'agit d'une variable d'environnement qui s'appelle NSZombieEnabled, regardez cette vidéo qui explique la configuration de NSZombieEnabled dans objective-C
la source
Dans Xcode> 4.3:
Vous cliquez sur la barre déroulante du schéma -> modifier le schéma -> onglet arguments, puis ajoutez NSZombieEnabled dans la colonne Variables d'environnement et YES dans la colonne des valeurs.
Bonne chance !!!
la source