¿Es necesario establecer los punteros a cero en Objective-C después del lanzamiento?
-
03-07-2019 - |
Pregunta
¿Hay algo de malo en hacer algo como
NSString * string = [[NSString alloc] init];
...
[string release];
o hay algún valor (que no sea la mejor práctica) al agregar también
string = nil;
?
Solución
No es necesario, pero buena práctica. Si tuvieras que hacer una referencia involuntariamente después del lanzamiento, podrían ocurrir cosas malas, pero en el Objetivo C no hay ningún daño en hacer referencia a un nulo.
Otros consejos
Establecer una variable de instancia en nil es más útil en una aplicación de múltiples subprocesos que en una sola hebra, ya que con múltiples subprocesos no siempre se puede garantizar que una variable de instancia solo se lea antes de está publicado.
Generalmente no me molesto en las aplicaciones de un solo hilo, a menos que haya alguna otra razón convincente.
Objective-C es realmente lo mismo que C con un preprocesador elegante.
Establecer un puntero a cero en Objective-C no tiene ningún efecto en lo que alguna vez apuntó ese puntero.