Ist es akzeptabel/safe in Objective-C/Cocoa die init
Methode zur Verpackung wie folgt: Die [self init]
Mit `self = [self init]` andere wickeln `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;
}
Hinweis in initWithFoo
.
vielleicht ist dies eine einfache Antwort ja ... scheint offensichtlich, aber nicht Standard?
Es ist akzeptabel. Mein einziger Kommentar ist über die zweite Methode. Es ist immer besser, etwas wie folgt zu verwenden: - (id) initWithFoo: (Foo) newFoo {.... self.foo = newFoo ....} –
Sorry, wurde schnell die Frage veranschaulichen ... wird die Semantik – Ross
korrigieren Ich würde sagen, es ist ungewöhnlich: Ihr 'initWithFoo:' ist der Initiator, der am meisten leistet. Aber es tut dies indirekt, indem es einen anderen Initialisierer aufruft, der etwas anderes tut. Gemeinsame (und _good! _) Übung ist _one_ benannter Initialisierer. Die spezifischste, die alle anderen Initialisierer mit Standardargumenten aufrufen. Und das wäre Nummer zwei, da es zwei Ivars initialisiert: 'foo' und' bar'. – danyowdee