2016-08-28 3 views
-2

Ich habe eine benutzerdefinierte Klasse "MyTask", die von anderen Klassen wie Klasse "ViewController" aufgerufen wird. Inside „MyTask“ Ich habe die Funktion „startTask“, die Parameter NSTimer starten erforderlich nimmt Funktion „doStuff“ auszuführen Jedoch, wenn ich Funktion startTask verwenden und stellen Sie den Wähler für andere Funktion stürztUnbekannter Selektorfehler in SWIFT

class MyTask { 
      var timer = NSTimer() 
      var timerInterval = 0.0 
      var target: AnyObject! 
      var selector = Selector() 

      func startTask(time: Double, target target: AnyObject, selector: Selector) { 
       self.timerInterval = time 
       self.target = target 
       self.selector = selector 
       doStuff() 
      } 
func doStuff() { 
//....some code here to run 
//====Crash happens on this line===== 
self.timer = NSTimer.scheduledTimerWithTimeInterval(self.timerInterval, target: self, selector: self.selector, userInfo: nil, repeats: true) 

} 

In meiner anderen Klasse hier ist das, was ich

class ViewController { 
    let mynewClass = MyTask() 
    mynewClass = startTask(2, target: self, selector_: #selector(updateLabel)) 

func updateLabel() { print("") } 
} 

ich eine Störung erhalte *** NSForwarding: Warnung: Objekt 0x7fe90242f6f0 der Klasse 'abc' nicht implementiert methodSignatureForSelector: - [. abc timerAction] - Ärger voraus Unerkannte Selektor

Was mache ich falsch?

+1

Sie sollten alle Ihre Klassen mit einem Großbuchstaben beginnen –

+0

Zusätzlich zu dem, was @Leodabus sagte, sollten Sie auch nicht "_" an Ihre Parameternamen anhängen. Verwenden Sie stattdessen den normalen Parameternamen. Verwenden Sie dann in der Implementierung des Initialisierers oder der Methode 'self.', um Eigenschaften mit dem gleichen Namen wie ein Parameter zu setzen:' self.target = target' –

+0

Leo, abc ist nur ein Beispiel .. –

Antwort

1

Die Klasse, die das Ziel des Selektors sein soll, muss von NSObject ableiten. Sie verwenden hier eine Objective-C-Funktion. Sie müssen eine Objective-C-kompatible Klasse haben.

Verwandte Themen