Ich baue eine iOS-App in Swift und zeichne auf das Lister Beispielprojekt von Apple.Aufruf von super.init() im Initialisierer der NSObject-Unterklasse in Swift
Lister verwendet zwei Modellobjekte: List und ListItem. Ich habe festgestellt, dass beide in ihren Initialisierern super.init()
nicht aufrufen, obwohl sie NSObject ableiten. In der Objective-C-Version von Lister rufen beide Modellobjekte (AAPLList und AAPLListItem) jedoch [super init]
auf.
Die Swift Programmiersprache eindeutig fest, dass „bezeichnet initializers einen designierten Initialisierer aus ihrer unmittelbaren übergeordneten Klasse aufrufen müssen.“ (Artikel 1 von Initializer Chaining in Initialisierung)
Was ist hier los? Warum ist dies eine Ausnahme, und wenn Sie nicht immer aufrufen sollten super.init() in einer Unterklasse, welche Regeln gelten?