У меня есть пользовательский класс «MyTask», который вызывается из других классов, таких как класс «ViewController». Внутри «MyTask» У меня есть функция «startTask», который принимает параметры, необходимые для начала NSTimer выполнить функцию «DoStuff» Однако, когда я использую функцию startTask и установите переключатель для другой функции он выходит из строяНепризнанная ошибка выбора в 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)
}
В моем другом классе вот что я
class ViewController {
let mynewClass = MyTask()
mynewClass = startTask(2, target: self, selector_: #selector(updateLabel))
func updateLabel() { print("") }
}
я получаю сообщение об ошибке *** NSForwarding предупреждение: объект 0x7fe90242f6f0 класса 'ABC' не реализует methodSignatureForSelector: - [. а timerAction] - неприятности впереди Непризнанный селектора
Что я делаю неправильно?
Вы должны назвать все свои классы, начиная с прописной буквы –
В дополнение к тому, что сказал @LeoDabus, вы также не должны добавлять «_» к вашим именам параметров. Вместо этого используйте имя нормального параметра. Затем в реализации инициализатора или метода используйте 'self.' для установки свойств с тем же именем, что и параметр, например:' self.target = target' –
Leo, abc - это просто пример. –