2012-08-24 5 views
15

Ho recentemente convertito il mio progetto iOS in ARC. Uno dei controller della vista non sta chiamando il suo metodo dealloc e non viene deallocato secondo Instruments.Come si scopre cosa trattiene un oggetto in Strumenti?

Ho ricontrollato tutte le mie proprietà e impostato quelle deboli. Mi sono anche assicurato che tutto ciò che ha il controller di visualizzazione come delegato lo abbia disattivato su viewWillDisappear ma la vista rimane ancora in memoria.

Sono un novizio di Strumenti: come posso sapere cosa sta mantenendo questa visualizzazione?

+0

Mettere un messaggio di log in viewWillDisappear con il tipo di oggetto e il suo puntatore, quindi quando si scopre che un VC non è stato dealloc guardate se in effetti ha viewWillDisappear. –

risposta

27

Beh, se siete veramente bloccato e il programma è complesso (o astratta, nel caso di ARC), è possibile portare fuori i cannoni:

  • Aprire il progetto Xcode
  • scegliere il file eseguibile (se necessario)
  • Press cmd+i (Profilo)
  • scegliere lo strumento 'Perdite' a le Wizard (se necessario)
  • Premere Invio per avviare la profilazione
  • Esercizio vostra applicazione
  • Premere 'Stop' in Strumenti
  • Verificare lo strumento 'allocazioni' è selezionato
  • cliccare e tenere premuto il tasto popup chiamato 'Statistiche' elemento
  • selezionare la lista Oggetti
  • Locate l'allocazione a cui sei interessato, tra i record nell'elenco oggetti
  • Seleziona quell'allocazione/oggetto
  • Fai clic sulla "freccia di dettaglio" a destra dell'indirizzo nella cella di visualizzazione tabella di quello allo cazione
  • Ora si vede tutti gli eventi connessi alla distribuzione (ripartizione, libero, le operazioni di conteggio di riferimento)
  • Press cmd+shift+e per il dettaglio esteso
  • passare attraverso le manifestazioni in questo elenco, e individuare lo squilibrio che cercate.
+1

Il Dettaglio Esteso ti permetterà di vedere la pila di come è stata allocata la memoria e può darti una buona indicazione di dove potresti avere un 'malloc' che non ha un' libero 'corrispondente. – Gujamin

Problemi correlati