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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top