Diciamo che ho la seguente classe di Swift (che ha evidenti problemi)metodi di chiamata da Swift initializer
class MyClass {
let myProperty: String
init() {
super.init()
self.setupMyProperty()
}
func setupMyProperty() {
myProperty = "x"
}
}
Questa è eccessivamente semplificata ma sto fondamentalmente cercando di delegare l'inizializzazione del myProperty
nel metodo setupMyProperty()
. È un pattern che uso spesso per suddividere le diverse parti del setup di una classe.
Ma ovviamente, non posso chiamare self
fino a quando non è stato eseguito il super inizializzatore e non riesco a eseguire il super inizializzatore finché non sono state impostate tutte le proprietà, quindi sono in una presa 22. Sopra poiché setupMyProperty()
non è considerato un inizializzatore, non sarà in grado di assegnare lo myProperty
in ogni caso.
Qualcuno può dirmi come implementare questo modello in Swift?
Non so se questo sarebbe ok per voi, ma è possibile assegnare un valore quando si dichiara la proprietà. 'let myProperty: String =" x "' –
Sì, lo uso laddove ha senso.Ma nei casi in cui queste cose sono inizializzate in base ai parametri dati all'inizializzatore, l'inizializzatore diventa disordinato. Immagino sia un segno che la mia classe abbia troppi attributi. – mprivat
Controlla sessione WWDC 403: Intermediate Swift, circa 29 min in inizializzazione della classe covers. – DogCoffee