Se ho un parametro passato a un metodo, devo rilasciare il parametro alla fine del metodo?Hai bisogno di rilasciare parametri di metodi alla fine di essi in Objective-C?
risposta
No. Think NARC: "New Alloc Retain Copy". Se non stai facendo nessuna di quelle cose, non hai bisogno di rilasciare.
È 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.
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.
A meno che non si stia lavorando direttamente con gli oggetti di base, è necessario delegare tutto a ARC in questo momento.
- 1. Hai bisogno di rilasciare CGContextRef in Swift?
- 2. Hai bisogno di un esempio di UILocalNotifications
- 3. Quando hai bisogno di "int" in C++?
- 4. Hai bisogno di utilizzare path.join in Node.js?
- 5. Hai bisogno di aiuto per capire LINQ in MVC?
- 6. Hai bisogno di chiarimenti su UIApplicationState
- 7. android.os.NetworkOnMainThreadException. Hai bisogno di usare un'attività asincrona?
- 8. Hai bisogno di aiuto sull'attuazione servicestack
- 9. Hai bisogno di alcuni chiarimenti in merito refreshObject: mergeChanges: SI
- 10. Haskell - Currying? Hai bisogno di ulteriori spiegazioni
- 11. Hai bisogno di aiuto capire MySQL iniezione
- 12. Hai bisogno di pareri su LaTeX e di qualsiasi aggiornamento
- 13. Hai bisogno di aiuto su OAuthException Code 2500
- 14. Hai bisogno di semaphore.relase() se semaphore.acquire() ottiene InterruptedException?
- 15. Come aggiungere parametri al metodo generato in Roslyn (Microsoft.CodeAnalysis)? - Hai bisogno di sintassi esatta
- 16. Hai mai usato metodi di estensione privati?
- 17. Hai bisogno di aiuto per analizzare i risultati di VarnishStat
- 18. Python - Facebook API - Hai bisogno di un esempio di lavoro
- 19. Hai bisogno di codificare in HTML i tag del titolo?
- 20. Hai bisogno di aiuto in mod 1000000007 domande
- 21. Hai bisogno di aiuto in uscita callgrind lettura
- 22. Hai bisogno di sapere come installare gdb in linux machine
- 23. Hai davvero bisogno di un main() in C++?
- 24. Hai bisogno di chiarimenti sui tipi dinamici in golang
- 25. Hai bisogno di un esempio di sqlite con Monodroid
- 26. Hai bisogno di aiuto decifrare un C# traccia dello stack
- 27. Perché dovresti aver bisogno di una barra alla fine di un URL?
- 28. Hai davvero bisogno del blocco 'finally'
- 29. Hai bisogno di aiuto per ottenere la finestra popup Slider
- 30. Spring MVC and Servlets 3.0 - Hai ancora bisogno di web.xml?
+1 per l'acronimo –
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
Questo è un sacco di rappresentanti per una domanda con 0 voti positivi là. –