Поток 1: сигнал SIGABRT, нераспознанный селектор отправлен на экземпляр - PullRequest
1 голос
/ 27 октября 2019

Я пытаюсь построить таймер обратного отсчета в xcode, но по какой-то причине он не работает.

Я перепробовал все виды метондов, но все еще продолжаю получать ту же ошибку.

import Foundation
import UIKit

class SecondViewController: UIViewController {

        // text field counter
    var count:Int = 300

    @IBOutlet weak var counter: UILabel!
    let timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(countDown), userInfo: nil, repeats: true)


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view
    }
    @objc func countDown(){
        counter.text = String(count)
        count -= 1


    }


}

Это ошибка, которую я получил:

- [__SwiftValue countDown]: нераспознанный селектор отправлен в экземпляр 0x6000025dde00

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Вы передаете метод экземпляра при инициализации члена экземпляра без использования вычисленной инициализации lazy, поэтому не гарантируется, что вы получите полностью инициализированный экземпляр для привязки его метода. Расписание timer, как показано ниже,

class SecondViewController: UIViewController {

    // text field counter
    var count:Int = 300

    @IBOutlet weak var counter: UILabel!
    var timer: Timer?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(countDown), userInfo: nil, repeats: true)
    }

    @objc func countDown(){
        counter.text = String(count)
        count -= 1
    }
}
0 голосов
/ 27 октября 2019

просто проверьте, если @IBOutlet слабый счетчик переменных: UILabel! подключен к вашей метке раскадровки enter image description here

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