2009-07-06 25 views
3

Wenn ich einige Interface Builder-Objekte als Instanzvariablen an ein anderes Objekt binden möchte, müssen sie in der Dealloc-Methode des übergeordneten Objekts freigegeben werden? Der wichtige Punkt ist, dass ich meine IBOutlets mit Schlüsselwertcodierung (@property) im (nichtatomaren, behaltenen) Modus deklariere. In meiner Theorie werden IBOutlet-Objekte erstellt, wenn initWithNibName: ... die Methode meines View-Controllers aufgerufen wird und vom übergeordneten Objekt beibehalten wird, weil ich eine @property-Methode im Retain-Modus implementiert habe. Ist das richtig? Was ist, wenn ich die Methode im Zuweisungsmodus implementiere?Objective-C IBOutlet-Objekte werden freigegeben?

Antwort

2

Absolut korrekt. Sie müssen die Eigenschaften (beibehalten) in dealloc, IBOutlet oder nicht freigeben. Auf diese Weise ist die Speicherverwaltung für IBOutlets klar definiert.

Wenn Sie IBOutlets aus bereits vorhandenen Objekten verdrahten (z. B. Unteransichten von ansonsten beibehaltenen Ansichten), können Sie auch Ihre Eigenschaften verwenden (zuweisen) (und natürlich nicht in dealloc freigeben).

Verwandte Themen