2009-08-23 7 views
4

Gibt es irgendeine Art von Ziel zum Nullsetzen von Speicher, das c für mich übernimmt, wenn ich zuerst eine Klasseninstanz zuteile? Ich sehe eine Menge objektiven Code, der davon ausgeht, dass ihre Ausgänge nil standardmäßig sind. Wenn ich das gleiche tue, stütze ich solches Verhalten auf falsche Vorwände?Objective-C-Klasseninstanz auf alloc zurückgesetzt?

Antwort

8

NSAllocateObject gibt einen Speicherblock zurück, der groß genug ist, um alle Ivars in der Klasse einzubeziehen; Sein Zeiger isa wird auf die Klasse gesetzt, und der Rest des Blocks wird mit 0 gefüllt. +[NSObject alloc] Aufrufe +[NSObject allocWithZone:], die dann intern NSAllocateObject aufrufen.

8

Ja, alle zugewiesenen Objekte werden auf Null gesetzt. Siehe NSObject alloc documentation. Es ist durch die Sprache garantiert, so dass es vollkommen sicher ist, dies zu tun, und die Mitglieder auf 0 zu setzen, wäre überflüssig.

Verwandte Themen