2012-05-18 11 views

Antwort

9

Es ist davon auszugehen, dass alle Instanzvariablen auf 0 initialisiert werden

Dies ist jedoch nicht der Fall für lokal/Methode scoped Variablen, die, wenn sie nicht manuell initialisiert, auf Junk verweisen.

Für die Zukunft, wie Rob Napier points out, kann dies in the documentation for + (id)alloc finden:

Die isa Instanzvariable der neuen Instanz wird auf eine Datenstruktur initialisiert, der die Klasse beschreibt; Speicher für alle anderen Instanzvariablen ist auf 0 festgelegt.

+3

einfach die Referenz zur Verfügung zu stellen, die Dokumentation für '+ alloc' lesen. Insbesondere werden alle Ivars außer 'isa' auf 0 initialisiert, aber Sie sollten sowieso nicht mit 'isa' spielen. –

+1

Beachten Sie, dass automatische Objektzeiger _are_ tatsächlich initialisiert wurden, wenn sie unter ARC kompiliert wurden. –

0

Ich bin es gewohnt, es explizit zu initialisieren, hauptsächlich wegen der Rückverfolgbarkeit und Lesbarkeit. Aber wenn Sie die Definition von BOOL betrachten, werden Sie sehen, dass NO nichts anderes ist als ein #define für 0. Deshalb nehme ich an, dass Sie sicher _test zu NO erwarten können.

ein wirklich gutes Posting über Boolesche und ihre Handhabung ist Objective-C : BOOL vs bool

Verwandte Themen