Nessuna perdita che appare in Instruments, anche se sono sicuro che esistano
-
20-08-2019 - |
Domanda
Sto verificando la presenza di perdite in Instruments e ho impostato il controllo ogni secondo, ma non vengono visualizzate perdite.
Sono sicuro che ce ne devono essere alcuni nella mia app, c'è qualcosa che potrebbe impedire a questi di apparire? Esiste un buon modo per creare una perdita in modo da poter verificare se le perdite vengono visualizzate in Strumenti?
Grazie!
Soluzione
Troverai delle perdite con uno strumento solo se un oggetto è allocato ma non è più referenziato. Un altro tipo di & Quot; leak & Quot; è tenere un riferimento a qualcosa che non avevi intenzione di fare. Questo in genere accade con una raccolta come una tabella hash o un dizionario in cui le coppie chiave / valore vengono lasciate nella raccolta che il programmatore ha dimenticato.
Altri suggerimenti
Creare una perdita è semplice:
id someObject = [[NSObject alloc] init];
someObject = nil;
Rilascia un po 'di codice come quello nella tua app e dovresti assolutamente vedere una perdita mostrata in Instruments.
Sono abbastanza sicuro, come postulato da clemahieu, che cosa stai davvero vedendo sono oggetti sovra-mantenuti - pensi di averli liberati ma sono ancora conservati.
Un rapido controllo di integrità per questo è quello di impostare i punti di interruzione in dealloc e vedere se le classi che ti aspetti di essere liberate lo sono davvero.
Puoi anche usare lo strumento di tracciamento della memoria (non perdite) per vedere quale memoria è ancora in giro - assicurati di selezionare il " creato e ancora in vita " opzione per verificare quali oggetti sono ancora in giro.