E 'accettabile/sicuro in Objective-C/Cocoa per avvolgere il metodo init
come segue:Usando `auto = [sé init]` per avvolgere altro `init message`
-(id)init {
if ((self=[super init])) {
self.bar = [[Bar alloc] init];
}
return self;
}
-(id)initWithFoo:(Foo *)f {
if ((self=[self init])) {
self.foo = f;
}
return self;
}
Nota la [self init]
in initWithFoo
.
forse questa è una semplice risposta sì ... sembra ovvia, ma non standard?
è accettabile. Il mio unico commento riguarda il secondo metodo. È sempre meglio usare qualcosa del genere: - (id) initWithFoo: (Foo) newFoo {.... self.foo = newFoo ....} –
scusate, stava rapidamente illustrando la domanda ... correggerò la semantica – Ross
Direi che è raro: il tuo 'initWithFoo:' è l'inizializzatore che fa di più. Ma lo fa _indirettamente_ chiamando un altro inizializzatore, che fa qualcos'altro. La pratica comune (e _good! _) È quella di avere un inizializzatore designato _one_. Il più specifico, quello che tutti gli altri inizializzatori chiamano con argomenti predefiniti. E quello sarebbe il numero due, in quanto inizializza due ivars: 'pippo' e' bar'. – danyowdee