Thread objective-c: @property (retain) (7 answers)
Opened by esskar at 2010-02-16 19:00

murphy
 2010-02-16 20:06
#133121 #133121
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Es entspricht auch der gängigen Praxis bei Objective C, dass die Verantwortung der Speicherverwaltung mit wenigen Ausnahmen immer bei der aufgerufenen Methode liegt.¹ Daher sind Rückgabewerte normalerweise nicht retained, damit man sich als Programmierer zum Beispiel nicht weiter um sie kümmern muss, wenn man sie gar nicht abspeichert.

Damit es überhaupt möglich ist, Speichermanagement mit Referenzzählern zu betreiben bei dem die Zähler der Rückgabewerte nicht explizit dekrementiert werden müssen, gibt es bei Objective C Autoreleasepools, denen man Objekte hinzufügen kann, die man zurückgibt und deren Referenzzähler "später mal" noch dekrementiert werden muss. Der Normalfall ist, dass mindestens ein solcher Pool installiert ist und am Ende jedes Durchlaufes der Hauptereignisschleife des Programmes einmal geleert wird.


¹ Ausnahmen sind praktisch ausschließlich die explizit zur Speicherverwaltung gedachten Methoden wie + alloc, - copy und dergleichen mehr.
When C++ is your hammer, every problem looks like your thumb.

View full thread objective-c: @property (retain)