Warum wird [ClassName alloc] anstelle von [[self class] alloc] verwendet?

Ich lese durch Mark Dalrymples Objective-C auf dem Mac lernen (nur im Kapitel über Protokolle, also noch relativ neu) und versuchen, etwas herauszufinden:

Warum würden Sie jemals eine Klasse mit ihrem eigenen Namen referenzieren? Wenn ich eine Klasse namens @ hätFoo, warum sollte ich jemals schreiben wollen, sagen,

[[Foo alloc] init]

und nich

[[[self class] alloc] init]

Wenn ich eine Unterklassen-Leiste hätte, würde mich die erste Option nicht daran hindern, @ zu schreibe

[[Bar alloc] init]

Warum würde die zweite Option es erlauben? Wann wäre die erste Option besser?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage