Escrito por Iván Alonso el Lunes 16 de Febrero de 2009

La explicación es sencilla, en Objective-C la creación de un objeto está separada en dos fases diferenciadas, al contrario que otros lenguajes como C++. Por un lado está el alojamiento en memoria (alloc) y por otro la inicialización (init).

Cuando se va a llamar al init, el self de un objeto siempre apunta al objeto devuelto por alloc. Aunque no es habitual, existe la posibilidad de que, en la segunda fase de la creación, en el init del padre, se elimine el objeto actual y se cree uno nuevo, que sea el que se devuelve. Generalmente esto no suele usarse, por lo que la instrucción:

[super init];
// código de inicialización

generalmente es válida pero, para asegurarnos, no está de más que nuestras inicializaciones sean del tipo

if (self = [super init])
{
    // código de inicialización
}

Y terminar siempre con un:

return self;

Etiquetas:

Esta entrada fue escrita el Lunes 16 de Febrero de 2009 a las 1:40 pm y está archivada en la categoría Blog. Puedes seguir las respuestas y comentarios en el feed RSS 2.0. Puedes dejar un comentario, o dejar un trackback desde tu propia página.

Deja tu comentario