objective-c - with - xcode for windows




Come posso configurare NSZombieEnabled in Xcode 4? (5)

On In Xcode 7

<

oppure selezionare Edit Scheme dal menu Product > Scheme

selezionare Enable Zombie Objects dalla scheda Diagnostics

In alternativa, se preferisci i file .xcconfig puoi leggere questo articolo https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/

Come posso configurare NSZombieEnabled e CFZombieLevel per il mio eseguibile in Xcode 4?


Il cacao offre una funzionalità interessante che migliora notevolmente le tue capacità di eseguire il debug di tali situazioni. È una variabile d'ambiente che si chiama NSZombieEnabled, guarda questo video che spiega come impostare NSZombieEnabled nell'obiettivo-C


In Xcode 4.x premere

R

(oppure fare clic su Menubar > Product > Scheme > Edit Scheme )

seleziona la scheda "Diagnostica" e fai clic su "Abilita oggetti zombi":

Questo trasforma gli oggetti rilasciati in istanze di NSZombie che stampano avvisi di console quando vengono usati di nuovo. Questo è un aiuto per il debug che aumenta l'utilizzo della memoria (nessun oggetto è realmente rilasciato) ma migliora la segnalazione degli errori.

Un caso tipico è quando esagerate un oggetto e non sapete quale:

  • Con gli zombi: -[UITableView release]: message sent to deallocated instance
  • Senza zombi:

Questa impostazione Xcode viene ignorata quando si archivia l'applicazione per l'invio all'App Store. Non è necessario toccare nulla prima di rilasciare la tua applicazione.

Premere ⌥⌘R equivale a selezionare Prodotto> Esegui tenendo premuto il tasto Alt.
Fare clic sulla casella di controllo "Abilita oggetti zombi" equivale ad aggiungere manualmente "NSZombieEnabled = SÌ" nella sezione "Variabili d'ambiente" della scheda Argomenti.


In Xcode> 4.3:

Fai clic sulla barra a discesa dello schema -> Modifica schema -> scheda Argomenti, quindi aggiungi NSZombieEnabled nella colonna Variabili d'ambiente e SÌ nella colonna dei valori.

In bocca al lupo !!!


Trovo questa alternativa più comoda:

  1. Fai clic sul pulsante "Esegui il menu a discesa"
  2. Dalla lista scegli Profile
  3. Il programma "Strumenti" dovrebbe aprirsi dove puoi anche scegliere Zombies
  4. Ora puoi interagire con la tua app e provare a causare l'errore
  5. Non appena si verifica l'errore, dovresti ottenere un suggerimento su quando il tuo oggetto è stato rilasciato e quindi rilasciato.

Non appena viene rilevato uno zombi, ottieni uno "Zombie Stack" pulito che ti mostra quando l'oggetto in questione è stato assegnato e dove è stato conservato o rilasciato:

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]

Vantaggi rispetto all'utilizzo della scheda diagnostica degli schemi Xcode :

  1. Se si dimentica di deselezionare l'opzione nella scheda diagnostica, nessun oggetto verrà rilasciato dalla memoria.

  2. Si ottiene uno stack più dettagliato che mostra in quali metodi il tuo oggetto corrotto è stato assegnato / rilasciato o mantenuto.





nszombie