Sto costruendo un'app per iOS in Swift e disegno sul progetto di esempio Lister fornito da Apple.Chiamare super.init() nell'inizializzatore della sottoclasse NSObject in Swift
Lister utilizza due oggetti modello: List e ListItem. Ho trovato che entrambi non chiamano nei loro inizializzatori anche se eseguono la sottoclasse di NSObject.
Tuttavia, nella versione Objective-C di Lister, entrambi gli oggetti del modello (AAPLList e AAPLListItem) chiamano [super init]
.
Il Swift linguaggio di programmazione afferma chiaramente che “inizializzatori designati devono chiamare un inizializzatore designato dalla loro immediata superclasse.” (Regola 1 di Initializer Chaining in inizializzazione)
Che cosa sta succedendo qui? Perché si tratta di un'eccezione e se non si dovrebbe sempre chiamare super.init() in una sottoclasse, quali regole si applicano?