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;
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage