2016-06-27 2 views
0

Zugriff self vor super.init() Anruf ist laut Dokument zu verbieten.Warum verwenden self.properties ist korrekt.swift Anrufe selbst vor super.init

var myString: String 
init(frame: CGFloat) { 
    //error:'self' userd before super.init call 
    print(self) 
    self.myString = "11" 
    print(self.myString) 

    super.init() 
} 

Warum es ein Fehler auftritt print(self) ruft, ruft print(self.myString) ok ist?

Antwort

1

Die Argumentation ist logischer Kontext, lasst uns das durchgehen.

In der Zeile self.myString = "11" deklarieren Sie, was myString ist, das ist == "11".

Jetzt könnten Sie print(self.myString).

Aber! Sie können NICHT selbst drucken, da SELF nie initialisiert/deklariert wurde! Sie müssen eine Art Initialisierer aufrufen, d. H. Den übergeordneten Initialisierer (super.init), und dann deklarieren/instanziieren Sie einen Objekttyp.

Sie müssen also nicht unbedingt wissen, was SELF ist, aber Sie können definitiv bestimmen, was self.myString ist!

Verwandte Themen