emailconfirmed, nsInternRO, nsInternRW, Administrators
3,356
edits
No edit summary |
|||
Line 49: | Line 49: | ||
** copy erstellt ein Objekt mit einem anfänglichen retain-count von 1 | ** copy erstellt ein Objekt mit einem anfänglichen retain-count von 1 | ||
* retain sorgt dafür, dass das Objekt auf jeden Fall erhalten bleibt. Es wird kein neues Objekt erstellt. | * retain sorgt dafür, dass das Objekt auf jeden Fall erhalten bleibt. Es wird kein neues Objekt erstellt. | ||
** retain erhöht den retain- | ** retain erhöht den retain-count um 1. | ||
* autorelease sendet ein release in der nächsten Run-Loop. Der retain-count bleibt im aktuellen Run-Loop erhalten. | |||
** autorelease verringert den retain-count um 1 in der nächsten Programmschleife | |||
== Autorelease == | |||
Die Run Loop wird mit dem Start des Programms erstellt. Eine autorelease-Nachricht greift also erst mit der nächsten Schleife. Damit wird sichergestellt, dass das Objekt während der aktuellen Schleife noch vorhanden und gültig ist. Innerhalb einer Runloop-Schleife sind wir z.B. wenn ein Event (Mausklick) erfolgt ist. | |||
[[File:autorelease.jpg]]<br/> | |||
''Autorelease-Beispiel; basiert auf Stanford iPhone Application Programming (iTunes U), Slide from Lecture 3'' | |||
== Beispiel == | == Beispiel == | ||
Line 121: | Line 129: | ||
** self.name = nil; | ** self.name = nil; | ||
** name = nil; | ** name = nil; | ||