Variabili locali impostate su zero? (Objective-C)

Sto leggendo un libro su Objective-C e l’autore ha detto che se alle variabili locali non viene assegnato un valore, saranno impostate su zero, ma le variabili statiche saranno impostate su zero. Quindi, ho impostato int a e non gli ho assegnato un valore. Quindi NSLog(@"%i", a) per visualizzarlo e a stato visualizzato come zero. Ero un po ‘confuso su questo e mi stavo chiedendo se qualcuno potesse chiarirlo per me?

Con ARC abilitato, le variabili del puntatore dell’object Objective-C saranno impostate su zero indipendentemente da dove le crei.

Senza ARC e per i tipi C incorporati, le tue variabili non verranno inizializzate.

Le variabili di istanza degli oggetti Objective-C sono sempre impostate su 0 (o zero) quando si assegna un object.

Le statistiche sono impostate su 0.

Ho preso l’abitudine di dare sempre un valore predefinito alle variabili, però. È stata una buona abitudine avere.

N. 2 . Proprio come in “plain” C, alle variabili locali non viene assegnato un valore predefinito. (Anche se potresti essere fortunato la prima volta che viene utilizzata una parte dello stack: non fare affidamento su questo!)

Comunque, nil è 0 1 – cioè, nil == 0 è sempre true – quindi NSLog("@%i", nil) dice “hey, registra l’argomento come un intero”, che è … 0.

Buona programmazione.


1 Vedi nil in gdb non è definito come 0x0? che copre la definizione tecnica, compreso il caso Objective-C ++, in modo più dettagliato. Si noti che il tipo cambia a seconda dell’architettura e quindi "@%i" potrebbe benissimo essere sbagliato per un particolare sistema.

2 Vedi la risposta di wbyoung per le regole specifiche di ARC .