2010-05-19 3 views

risposta

66

No. Think NARC: "New Alloc Retain Copy". Se non stai facendo nessuna di quelle cose, non hai bisogno di rilasciare.

+11

+1 per l'acronimo –

+6

Seriamente. Questo è impressionante. Funziona bene se assumi la voce di Stooge e pensi "Narc narc narc" mentre analizzi il tuo codice per problemi di gestione della memoria ... – bbum

+1

Questo è un sacco di rappresentanti per una domanda con 0 voti positivi là. –

2

È necessario rilasciare solo loro, se si retain nel metodo. La convenzione è, che il chiamante è responsabile per assicurarsi, che gli oggetti passati come argomenti vivono almeno finché la chiamata è attiva.

6

Leggere lo Cocoa memory management guidelines. La seguente regola è pertinente alla tua domanda:

Si acquisisce la proprietà di un oggetto se lo si crea utilizzando un metodo il cui nome inizia con "alloc" o "nuovo" o contiene "copia" (ad esempio, alloc, newObject o mutableCopy) o se si invia un messaggio di conservazione. Sei responsabile di rinunciare alla proprietà degli oggetti che possiedi utilizzando la liberatoria o la pubblicazione automatica. Ogni altra volta che ricevi un oggetto, non devi rilasciarlo.

Chiaramente non hai ottenuto i parametri creandoli (nel tuo metodo). Quindi l'unica parte di cui devi preoccuparti è se li hai mantenuti nel metodo. Se lo hai fatto, devi rilasciarlo o autorizzarlo automaticamente. Se non l'hai fatto, non devi rilasciarlo o autorizzarlo automaticamente.

0

A meno che non si stia lavorando direttamente con gli oggetti di base, è necessario delegare tutto a ARC in questo momento.

Problemi correlati