2009-07-30 12 views
12

Ich habe eine UITableView als mein erster Bildschirm mit einem UINavigation Controller.Was ist retainCount in Objective-C?

In meinem ersten Bildschirm ich NSLog(@"Home Screen retain Count=%d",[self retainCount]); und es protokolliert 6 in, wenn seine viewDidLoad aufgerufen wird.

Ist das korrekt?

Antwort

15

Der retainCount ist die Anzahl der Eigentumsansprüche, die an dem Objekt ausstehen.

Sie übernehmen den Besitz eines Objekts, wenn Sie es mit einer Methode erstellen, deren Name mit "alloc" oder "new" beginnt oder "copy" enthält (z. B. alloc, newObject oder mutableCopy) oder wenn Sie es senden eine Retain-Nachricht Alle diese erhöhen den RetainCount.

Sie geben das Eigentum mit der Verwendung von "release" oder "autorelease" auf. Diese dekrementieren den RetainCount.

Allerdings sollten Sie niemals auf den Wert von retainCount achten, es ist bestenfalls verwirrend, im schlimmsten Fall irreführend. Folgen Sie einfach der memory management rules - Besitz übernehmen, wenn Sie einen Verweis auf ein Objekt behalten müssen und Eigentum abgeben, wenn Sie fertig sind, und Sie haben kein Problem.

Wenn Sie auf retainCount schauen, gehen Sie die Dinge falsch an, und Sie werden sich einfach weiter verwirren.

1

Es klingt gut. Warum sollte es falsch sein?

Im Allgemeinen ist es eine schlechte Idee, Dinge aus der Retain-Anzahl zu bestimmen. Es gibt keine Regeln über die Häufigkeit, mit der Sie ein Objekt beibehalten können. Die einzige Regel ist, dass jeder Retain mit einem Release ausgeglichen werden muss.