Was ist der Standardwert einer BOOL
Variablen in Objective-C?
94
Was ist der Standardwert einer BOOL
Variablen in Objective-C?
Es gibt keinen Standardwert, wenn Sie schreiben
-(void)somemethod {
BOOL x; // <--- no default value
Es wird auf Müll initialisiert.
Bei einem BOOL
ivar wird es jedoch auf initialisiert NO
, da die gesamte Instanz bei der Initialisierung mit 0 gefüllt wird.
(Hinweis: Wenn ARC aktiviert ist, haben lokale Objektzeiger immer einen Standardwert nil
, aber lokale Variablen von Nicht-Objekttypen wie BOOL werden weiterhin mit Garbage initialisiert. Siehe Lokale Variablen auf Null gesetzt? (Objective-C) .)
NO
wie oben erwähnt initialisiert . Ich denke du meinst var.Ich habe einige eigene Experimente mit Xcode 5.1, OS X Mavericks 10.9.4 durchgeführt. Für diejenigen, die ALog nicht kennen, ist ALog ein modifiziertes NSLog. Wie auch immer, das erste Experiment bestand darin, es
isLandscape
als öffentliche Variable zu verwenden@synthesize
, auf die der übergeordnete Ansichts-Controller zugreifen kann (siehe unten). Das zweite Experiment wurde nicht verwendet,@synthesize
und ich habe offensichtlichself.isLandscape
das gleiche Ergebnis in der Konsole erzielt. Die Konsolenausgabe befindet sich unter meinem Code. Das dritte Experiment verwendete 'isLandscape' als lokale Variable innerhalb einer Methode.Diese Ergebnisse stammen aus den ersten beiden Experimenten…
Im DRITTEN EXPERIMENT war 'isLandscape' keine Eigenschaft mehr. Ich habe es als lokale Variable mit interessanten Ergebnissen festgelegt:
Diese Ergebnisse stammen aus dem dritten Experiment…
Ich vermute, dass Eigenschaften von mir oder Xcode automatisch initialisiert werden, aber lokale Variablen erhalten überhaupt keine Werte. Schauen Sie sich trotzdem die lokale Variable [Zeile 164] an, die nicht JA oder NEIN ist, aber nicht Null ist. Ich denke, es ist der (zufällige) Müllwert, auf den Sie nicht zählen können. Ich hoffe das hilft der nächsten Person. Ich habe etwas gelernt, freue mich aber auf Kommentare. Danke und viel Glück!
quelle