2010-03-28 2 views

Antwort

23

Ja (unless your false is not 0). Die Standardmethode +alloc/+allocWithZone: setzt alle Ivars automatisch auf Null.

Von https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW17

  • Es initialisiert alle anderen Instanzvariablen auf Null (oder auf das Äquivalent-Typ für Null, wie nil, NULL und 0.0).
+0

Ausgezeichnet! Und danke für den Link. – Stabledog

+0

Sie können den Link, den Sie dort haben, auf die + alloc-Methode auf dieser Seite aktualisieren: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference .html – Reuben

+0

@Ruben: Danke. Auf einen funktionierenden Link aktualisiert. – kennytm

4

Erwähnenswert ist auch, dass, wenn Sie Objective-C tun ++, C++ Objekte, die ivars von Objective-C-Objekte sind nicht initialisiert: ihre Erbauer nicht standardmäßig aufgerufen werden.

+0

Oh, das ist ziemlich wichtig zu wissen! Also, was machst du, eine Reihe von Placement new() Operatoren? – Stabledog

+0

Eigentlich lag ich falsch: Standardmäßig werden die Konstruktoren aufgerufen. Es gibt eine Build-Einstellung, um das zu kontrollieren, es ist objc-call-cxx-cdtors. Wenn Sie es aktiviert lassen, werden die "Standard" -Ctors (z. B. diejenigen ohne Argument) aufgerufen. Weitere Details auf der gcc Handbuch: http://gcc.gnu.org/onlinedocs/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html (Oder Sie Zeiger verwenden können und neue() aufrufen, manuell) –

Verwandte Themen