J'ai une classe personnalisée "MyTask" qui est appelée à partir d'autres classes comme la classe "ViewController". A l'intérieur « MyTask » Je fonction « startTask » qui prend les paramètres requis pour démarrer NSTimer pour exécuter la fonction « doStuff » Cependant quand j'utilise la fonction startTask et réglez le sélecteur d'autres fonctions, il se bloqueErreur de sélecteur non reconnue dans 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)
}
Dans mon autre classe voici ce que je fais
class ViewController {
let mynewClass = MyTask()
mynewClass = startTask(2, target: self, selector_: #selector(updateLabel))
func updateLabel() { print("") }
}
Je reçois une erreur *** NSForwarding: avertissement: objet 0x7fe90242f6f0 de la classe 'abc' ne met pas en œuvre methodSignatureForSelector: - [. abc timerAction] - problèmes à venir sélecteur Unrecognized
Qu'est-ce que je fais mal?
Vous devriez nommer toutes vos classes commençant par une lettre majuscule –
En plus de ce que dit @LeoDabus, vous ne devriez pas ajouter "_" à vos noms de paramètres. Au lieu de cela, utilisez le nom de paramètre normal. Ensuite, dans l'implémentation de l'initialiseur ou de la méthode, utilisez 'self.' pour définir des propriétés avec le même nom qu'un paramètre, comme ceci:' self.target = target' –
Leo, abc n'est qu'un exemple. –