Dies geschieht, wie Sie Eigenschaften sind versucht, zuzugreifen, bevor die Klasse initialisiert hat.
Wenn Sie sich bewegen, dass nach der super.init
Linie, es wird beispiels arbeiten .:
...
super.init(size: fixedSize)
self.name = name
self.buttons = buttons
bearbeiten Ich dachte nur, es gibt eine Ausnahme von dieser obwohl und ich habe gerade bestätigt dies. Spielplatz mag es nicht, sondern eine tatsächliche app tut:
Klasse someclass: NSObject {
let a = 2
var b = 3
override init(){
let c = self.a
let d = self.b
super.init()
print("c: \(c), d:\(d)")
}
func foo(){
print("bar \(a)")
}
}
Ja, blöde Frage. Ich löste bewegende Anweisungen –
Wenn Sie Werte haben, die Sie vor der Init anwenden möchten, dann ist es am besten, die als 'statische Let MyVar = 123' zuweisen –
Ich habe gerade eine Ausnahme zu dem Fall in meiner ursprünglichen Antwort hinzugefügt. Warum der Spielplatz abstürzt, aber die App läuft, habe ich keine Ahnung, aber ich nehme an, das liegt daran, dass die Werte Standardwerte haben. –