【问题标题】:Swift NSTimer Exception [duplicate]Swift NSTimer 异常 [重复]
【发布时间】:2016-02-02 04:26:41
【问题描述】:

我的代码出现了一个奇怪的错误,当我尝试分配/运行计时器时,它会引发异常。

var timer: NSTimer?
     self.timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "repeatData", userInfo: nil, repeats: true)

这是我的功能

 private func repeatData() {
        print("test")
}

这会抛出

016-02-01 14:45:31.169 twu[43110:60021261] -[Test.Repeater repeatData:]: unrecognized selector sent to instance 0x7f848ba14e10

错误没有:

2016-01-28 17:27:51.958 my_target[16476:48497867] -[Test.Repeater repeatData]: unrecognized selector sent to instance 0x7fd06bc1c310
2016-01-28 17:27:51.968 my_target[16476:48497867] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Test.Repeater repeatData]: unrecognized selector sent to instance 0x7fd06bc1c310'

我试过有没有冒号。

【问题讨论】:

  • 是用了private这个词好吧,刚刚做了个测试……不知道为什么

标签: swift nstimer


【解决方案1】:

你的问题是你repeatDataprivate。只需删除private,您的计时器就可以工作了。

选择器的方法必须是可访问的方法,否则它不会找到它们,这就是为什么它会因unrecognized selector 错误而崩溃

【讨论】:

  • 这只是对了一半。它不起作用的原因是由于生成的标题。
【解决方案2】:

选择器应该是"repeatData"。冒号表示该方法采用您的repeatData 实现没有的参数。

【讨论】:

  • 我都试过了,但错误仍然存​​在。
  • 打印没有冒号的错误,因为它根本不可能相同。
  • @Woodstock 我添加了另一个错误
  • 私有函数是否与 NSTimer 调用在同一个 swift 文件中?
  • 是的@Woodstock
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多