Se supone que todas las clases tienen un designated initialiser. Si UIImageView
sigue esta convención (debería, pero no lo he probado), entonces encontrará que llamar al -init
terminará llamando al -initWithFrame:
.
Si desea asegurarse de que se ejecuta el método init, todo lo que tiene que hacer es anulan el inicializador designado de la clase padre, ya sea como esto:
-(id) initWithFrame:(CGRect)frame;
{
if((self = [super initWithFrame:frame])){
//do initialisation here
}
return self;
}
O así:
//always override superclass's designated initialiser
-(id) initWithFrame:(CGRect)frame;
{
return [self initWithSomethingElse];
}
-(id) initWithSomethingElse;
{
//always call superclass's designated initializer
if((self = [super initWithFrame:CGRectZero])){
//do initialisation here
}
return self;
}
+1 pero por favor inicie sus métodos init con 'init' para cumplir con las convenciones de nomenclatura. – JeremyP
Vaya, soy demasiado rápido para sacar "foo" o "bar" o "myFunction" cuando estoy inventando nombres para la demostración. –