Swift 4: Сбой таймера - нераспознанный селектор отправлен на экземпляр - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь вызвать экземпляр Timer и напечатать «Прошла секунда» за каждую прошедшую секунду. Я слушаю The Complete iOs 11 & Swift Developer Course по Udemy. Инструктор делает именно это, и его код работает, но у меня происходит сбой.

Вот код:

var timer: Timer! = Timer()

@IBAction func cameraPressed(_ sender: Any) {
    timer.invalidate()
}

func processTimer() {
    print("A second has passed")
}

override func viewDidLoad() {
    super.viewDidLoad()

    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: Selector("processTimer"), userInfo: nil, repeats: true)

Он должен запустить таймер при запуске приложения, а затем остановить его, когда я нажимаю кнопку камеры. Тем не менее, это ошибка с:

нераспознанный селектор отправлен на экземпляр ...

и

libc ++ abi.dylib: завершается с необработанным исключением типа NSException

Я новичок в Swift, и другие проблемы StackOverflow, которые кажутся похожими на это, не решают мою проблему. Я пытался изменить "Таймер!" необязательный для "Таймер?" и меняя "Selector (" processTimer ")" на "#selector (processTimer)", и я все еще не заставляю его работать.

1 Ответ

0 голосов
/ 03 июля 2018

Функция обратного вызова processTimer объявлена ​​неправильно:

@objc func processTimer() {
   //your code here
}

Вам нужно добавить ключевое слово @ objc перед функцией для вызова в обратном вызове Timer. Кроме того, в целом, я думаю, что лучше использовать ключевое слово #selector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...