Ogni classe dovrebbe avere un designated initialiser. Se UIImageView
segue questa convenzione (dovrebbe, ma non l'ho ancora testata), scoprirai che chiamare -init
finirà per chiamare -initWithFrame:
.
Se si vuole garantire che il vostro metodo init viene eseguito, tutto quello che dovete fare è eseguire l'override del initialiser designata della classe genitore, o come questo:
-(id) initWithFrame:(CGRect)frame;
{
if((self = [super initWithFrame:frame])){
//do initialisation here
}
return self;
}
O come questa:
//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;
}
fonte
2011-12-21 09:38:19
+1 ma si prega di avviare i metodi di init con n 'init' per mantenere le convenzioni di denominazione. – JeremyP
Whoops, sono troppo veloce per estrarre "foo" o "bar" o "myFunction" quando creo i nomi per la dimostrazione. –