what variable objective-c instance-variables null static-variables

objective c - what - Variables locales configuradas en cero?(C objetivo)



static variable java (2)

Estoy leyendo un libro sobre Objective-C y el autor dijo que si a las variables locales no se les asigna un valor, se establecerán en cero, pero las variables estáticas se establecerán en cero. Entonces, configuré int a y no le asigné un valor. Luego NSLog(@"%i", a) para mostrarlo y a se mostró como cero. Estaba un poco confundido sobre eso y me preguntaba si alguien podría aclarármelo.


Con ARC habilitado, las variables de puntero de objeto de Objective-C se establecerán en cero, independientemente de dónde las cree.

Sin ARC, y para los tipos C incorporados, sus variables no se inicializarán.

Las variables de instancia de los objetos de Objective-C siempre se establecen en 0 (o nil) cuando asigna un objeto.

Las estadísticas están ajustadas a 0.

Sin embargo, me he acostumbrado a dar siempre un valor predeterminado a las variables. Ha sido un buen hábito tener.


No 2 Al igual que en C "normal", a las variables locales no se les asigna un valor predeterminado. (Aunque puedes tener suerte la primera vez que se usa una parte de la pila: ¡no confíes en esto!)

De todos modos, nil es 0 1 , es decir, nil == 0 siempre es verdadero, por lo que NSLog("@%i", nil) dice "hey, registra el argumento como un entero", que es ... 0.

Feliz codificacion

1 Ver nil en gdb no está definido como 0x0? que cubre la definición técnica, incluido el caso de Objective-C ++, con más detalle. Tenga en cuenta que el tipo cambia según la arquitectura, por lo que "@%i" podría estar equivocado para un sistema en particular.

2 Vea la respuesta de wbyoung para las reglas específicas de ARC .