Objective-C punteros sin inicializar vs punteros nulos
-
06-07-2019 - |
Pregunta
Tal vez mi memoria se haya vuelto completamente loca, pero creo que recuerdo que declarar punteros sin inicializarlos hizo que apunten a cero. Pero recientemente este no parece ser el caso. ¿Siempre ha sido así? ¿O tiene algo que ver con la configuración del compilador?
Solución
Las variables de instancia de los objetos se inicializan en nil
en alloc
(todo el objeto está en cero).
Editar: Además, las variables de almacenamiento global y estático se inicializan a cero (6.7.8 10 de C99 Standard , gracias a Derek por señalarlo).
Las variables de la pila local no se inicializan automáticamente. Esto no cambió en la historia conocida.
Otros consejos
De Transición a las Notas de versión de ARC :
Las variables de pila se inicializan con
nil
Usando ARC, las variables de pila fuertes, débiles y de liberación automática se inician ahora implícitamente con
nil
. Por ejemplo:- (void)myMethod { NSString *name; NSLog(@"name: %@", name); }registrará
null
para el valor del nombre en lugar de tal vez fallar.