Zuweisen zu sich selbst in Objective-C
Ich komme aus der C ++ Welt also auf den Gedanken des Zuweisensthis
macht mich schaudern:
this = new Object; // Gah!
Aber in Objective-C gibt es ein ähnliches Schlüsselwort,self
, für die dies durchaus akzeptabel ist:
self = [super init]; // wait, what?
In vielen Objective-C-Beispielcodes wird die obige Zeile in verwendetinit
Routinen. Meine Fragen:
1) Warum erfolgt die Zuordnung zuself
Sinn machen (Antworten wie "weil die Sprache es erlaubt" zählen nicht)
2) Was passiert, wenn ich keine Zuordnung vornehme?self
in meineminit
Routine? Bringe ich meine Instanz in Gefahr?
3) Wenn die folgendenif
Anweisung schlägt fehl, was bedeutet es und was muss ich tun, um es zu beheben:
- (id) init
{
self = [super init];
if (self)
{
self.my_foo = 42;
}
return self;
}