In irgendeinem WWDC Video wurde über die Initializer Thematik gesprochen.
Wenn ich mich recht erinnere, soll der Initializer Mechanismus in Swift verhindern, dass man durch Überschreiben von Methoden der Superklasse auf nicht initialisierte Variablen zugreifen kann.
Nehmen wir an SuperClass ruft in seinem init eine Methode setupAllTheThings auf.
Nun überschreiben wir setupAllTheThings in SubClass und greifen darin auf Instanzvariablen unserer Subclass zu.
Würden diese erst nach dem Super call zu Init gesetzt werden, hätten wir nil Werte bei non-Optionals.
Ohne groß drüber nachzudenken stellt sich die Frage ob die "Keine Methodenaufrufe vor Ende des Inits" Regel nicht gereicht hätte um das zu verhindern.
Wenn ich mich recht erinnere, soll der Initializer Mechanismus in Swift verhindern, dass man durch Überschreiben von Methoden der Superklasse auf nicht initialisierte Variablen zugreifen kann.
Nehmen wir an SuperClass ruft in seinem init eine Methode setupAllTheThings auf.
Nun überschreiben wir setupAllTheThings in SubClass und greifen darin auf Instanzvariablen unserer Subclass zu.
Würden diese erst nach dem Super call zu Init gesetzt werden, hätten wir nil Werte bei non-Optionals.
Ohne groß drüber nachzudenken stellt sich die Frage ob die "Keine Methodenaufrufe vor Ende des Inits" Regel nicht gereicht hätte um das zu verhindern.
+schlotter+ Da gehen mir ja dann die ganzen Optimierungsmöglichkeiten des Compilers flöten, und ich bekomme inperformanteren Maschinencode.