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?
Sie sollten alle Ihre Klassen mit einem Großbuchstaben beginnen –
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' –
Leo, abc ist nur ein Beispiel .. –