线程 1:信号 SIGABRT,无法识别的选择器发送到实例

Posted

技术标签:

【中文标题】线程 1:信号 SIGABRT,无法识别的选择器发送到实例【英文标题】:Thread 1: signal SIGABRT, unrecognized selector sent to instance 【发布时间】:2019-10-27 12:52:07 【问题描述】:

我正在尝试在 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

【问题讨论】:

【参考方案1】:

您在实例成员的初始化中传递了一个实例方法,而没有使用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
    

【讨论】:

感谢这工作!!!现在终于搞定了,非常感谢您的帮助!【参考方案2】:

只检查是否 @IBOutlet 弱变量计数器:UILabel! 连接到您的故事板标签

【讨论】:

这就是我的问题的答案!

以上是关于线程 1:信号 SIGABRT,无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章

无法保存数据 --- Swift、IOS、Core 数据 --- 线程 1:信号 SIGABRT

Swift:线程 1:信号 SIGABRT

线程 1:“-[Xylophone.ViewController buttonClicked:]:无法识别的选择器发送到实例 0x7ff83a6074e0”

AppDelegate setFullscreen:无法识别的选择器发送到实例

Xcode:“线程 1:信号 SIGABRT”

线程 1:信号 SIGABRT 错误应用程序崩溃