Swift-Eigenschaften initialisieren, die "self" als Argument benötigen

8

Ich habe eine Swift-Klasse, die ich in etwa so sehen möchte:

%Vor%

Swift mag jedoch nicht die Tatsache, dass ich self an den Initiator NSTimer übergebe. Brich ich hier ein Muster? Wie soll man die Initialisierung so durchführen?

    
bloudermilk 05.08.2014, 22:15
quelle

3 Antworten

15

Sie haben den primären Anwendungsfall von Implizit nicht eingewickelt Optional .

  • Sie müssen auf self von init zugreifen, bevor timer initialisiert wird.
  • Andernfalls sollte timer nie gleich Null sein. Sie sollten es also nicht außerhalb von init überprüfen müssen.

Sie sollten also let timer: NSTimer! deklarieren.

    
jtbandes 05.08.2014, 22:21
quelle
1

Es ist möglich, dass Swift 2 geändert hat, was funktioniert. Ich verwende einen Code wie den folgenden:

%Vor%

Benötigt sowohl die @objc-Deklaration als auch die NSObject-Unterklasse. Auch Timer muss eine Var sein, nicht lassen.

    
EPage_Ed 23.11.2015 21:15
quelle
0

Abgesehen von dem implizit unwrapped optional, fand ich, dass, um den Code zum Laufen zu bringen, ich NSObject ableiten und auch den Timer zur aktuellen Laufschleife hinzufügen musste.

%Vor%

Aktualisierter Code basierend auf Kommentaren - Danke an jtbandes und Caroline

%Vor%     
sketchyTech 05.08.2014 23:02
quelle

Tags und Links