En un libro, vi que si una subclase es reemplazar el método de una superclase, podemos tener¿Por qué en Objective-C usamos self = [super init] en lugar de solo [super init]?
self = [super init];
En primer lugar, se supone que esto se haga en el método de la subclase init
?
En segundo lugar, me pregunto por qué la llamada no es sólo
[super init];
? Quiero decir, en el momento de llamar al init
, la memoria está asignada por alloc
ya (creo que por [Foobar alloc]
donde Foobar
es el nombre de la subclase. Así que ¿no podemos simplemente llamar a [super init]
para inicializar las variables miembro? ¿Por qué tenemos que obtener el valor de retorno de init
y asignar a self
? Quiero decir, antes de llamar a [super init]
, self
debe apuntar a un mandril de asignación de memoria válida ... ¿por qué asignar algo a uno mismo otra vez?
(si la asignación, no lo hará solo [super init]
devolver el valor existente self
?)
http://cocoawithlove.com/2009/04/what-does-it-mean-when-you-assign-super.html –
@AndreasCarlbom brillante tutorial gracias ... – Krishnabhadra
posible duplicado de [¿Por qué debería llamar? self = \ [super init \]] (http://stackoverflow.com/questions/2956943/why-should-i-call-self-super-init) –