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 .