Asignarse a sí mismo en Objective-C
Soy del mundo C ++ por lo que la noción de asignarthis
me hace estremecer
this = new Object; // Gah!
Pero en Objective-C hay una palabra clave similar,self
, por lo que esto es perfectamente aceptable:
self = [super init]; // wait, what?
Una gran cantidad de código Objective-C de muestra utiliza la línea anterior eninit
rutinas Mis preguntas:
1) ¿Por qué la asignación aself
tiene sentido (respuestas como "porque el lenguaje lo permite" no cuentan)
2) ¿Qué pasa si no asignoself
en miinit
¿rutina? ¿Estoy poniendo mi caso en algún tipo de peligro?
3) Cuando lo siguienteif
la declaración falla, qué significa y qué debo hacer para recuperarme de ella:
- (id) init
{
self = [super init];
if (self)
{
self.my_foo = 42;
}
return self;
}