Warum sind alloc und init aufgerufen separat in Objective-C?

Hinweis: ich bin relativ neu in Objective-C und komme von Java und PHP.

Könnte mir jemand erklären, warum ich immer zuerst allokieren und initialisieren einer Instanz?

Konnte dies nicht getan werden in der init-Methoden wie diese:

+ (MyClass*)init {
    MyClass *instance = [MyClass alloc];
    [instance setFoo:@"bla"];

    return instance;
}

+ (MyClass*)initWithString:(NSString*)text {
    MyClass *instance = [MyClass init];
    [instance setFoo:text];

    return instance;
}
...

Ist das nur ein Relikt aus der alten C Tagen oder ist es etwas, das ich nicht sehe?

Ich weiß, das ist nicht ein problem, da konnte ich auch immer anrufen, alloc und init, aber da es ein wenig mühsam, ich möchte zumindest wissen, warum ich bin, es zu tun.

Ich mag die Ausdruckskraft der Sprache so weit, aber das ist etwas, dass ich möchte, um vollständig zu verstehen, um zu denken, die Objective-C Weg.

Danke!

Schreibe einen Kommentar