Frage

Wie richte ich NSZombieEnabled und CFZombieLevel für meine ausführbare Datei in Xcode 4?

War es hilfreich?

Lösung

In Xcode 4.x drücken Sie

R

(oder klicken Sie Menubar> Product> Scheme> Edit Scheme)

wählen Sie das Register "Diagnose" und klicken Sie auf "Enable Zombie Objekte":

Klicken Sie auf "Aktivieren Zombie Objekte"

Das macht Objekte in NSZombie Instanzen freigegeben, dass der Druck Konsole Warnungen, wenn wieder verwendet. Dies ist eine Debug-Hilfe, dass erhöht die Speichernutzung (kein Objekt wirklich freigegeben), sondern verbessert die Fehlerberichterstattung.

Ein typischer Fall ist, wenn Sie über loslassen ein Objekt und Sie wissen nicht, welche:

  • Mit Zombies: -[UITableView release]: message sent to deallocated instance
  • Ohne Zombies: EXC_BAD_ACCESS

Diese Xcode Einstellung wird ignoriert, wenn Sie die Anwendung für App Store Vorlage archivieren. Sie müssen nicht vor dem Loslassen der Anwendung zu berühren etwas brauchen.

Durch Drücken von R ist die gleiche wie Produktauswahl> Ausführen, während die Beibehaltung Alt -Taste gedrückt.
Durch Klicken auf die „Enable Zombie Objects“, um das gleiche wie das manuelle Hinzufügen „NSZombieEnabled = YES“ ist im Abschnitt „Umgebungsvariablen“ der Tab Argumenten.

Andere Tipps

Jano Antwort ist der einfachste Weg, es zu finden .. ein anderer Weg wäre, wenn Sie auf dem Schema Dropdown Leiste klicken -> bearbeiten Schema -> Argumente Registerkarte und fügen Sie dann NSZombieEnabled in der Spalte Umgebungsvariablen und JA in der Wertspalte ...

finde ich diese Alternative bequeme:

  1. Klicken Sie auf den "Run-Knopf Dropdown"
  2. Sie aus der Liste wählen Profile
  3. Das Programm „Instrumente“ sollte sich öffnen, wo Sie auch Zombies
  4. wählen
  5. Nun können Sie mit Ihrer App interagieren und versuchen, den Fehler zu verursachen
  6. Sobald der Fehler passiert Sie einen Hinweis bekommen sollten, wenn das Objekt freigegeben wurde und daher aufgehoben.

Zombies

Sobald ein Zombie erkannt wird Sie dann einen ordentlichen „Zombie-Stack“ erhalten, die Sie zeigt, wenn das betreffende Objekt zugewiesen wurde und wo es zurückgehalten wurde, oder Freigabe:

Event Type    RefCt     Responsible Caller
Malloc            1     -[MyViewController loadData:]
Retain            2     -[MyDataManager initWithBaseURL:]
Release           1     -[MyDataManager initWithBaseURL:]
Release           0     -[MyViewController loadData:]
Zombie           -1     -[MyService prepareURLReuqest]

Vorteile im Vergleich zu den diagnostischen Registerkarte des Xcode Schemes mit :

  1. Wenn Sie vergessen, die Option in der Registerkarte Diagnose deaktivieren müssen, werden keine Objekte aus dem Speicher freigegeben werden.

  2. Sie erhalten eine detailliertere Stapel, dass Sie zeigt in welche Methoden Ihre korrupten Objekt wurde zugewiesen / freigegeben oder beibehalten.

In Xcode 4.2

  • Projektname / Schema bearbeiten / Diagnose /
  • Aktivieren Zombie Objekte Kontrollkästchen
  • Sie sind fertig

On In Xcode 7

<

oder wählen Sie Edit Scheme von Product> Scheme Menü

select Enable Zombie Objects Form der Diagnostics Registerkarte

 Xcode 7 Zombie-Flagge

Als Alternative, wenn Sie .xcconfig Dateien bevorzugen, können Sie diesen Artikel lesen https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/

Cocoa bietet ein cooles Feature, das Ihre Fähigkeiten stark, solche Situationen zu debuggen verbessert. Es ist eine Umgebungsvariable, die NSZombieEnabled genannt wird, sehen Sie sich dieses Video die NSZombieEnabled Einrichtung erklärt in Objective-C

In Xcode> 4.3:

Klicken Sie auf das Schema Dropdown-bar -> bearbeiten Schema -.> Argumente Registerkarte und dann NSZombieEnabled hinzufügen in der Spalte Umgebungsvariablen und YES in der Spalte Wert

Good Luck !!!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top