我是一名开发新手,目前正在学习Swift4。我正在编写Egg计时器应用程序,感到困惑。我创建了一个减少scheduledTimer
内时间的函数。但是,在我使用@objc创建decreaseTimer()
函数之前,它不允许我编译和构建。
这是为什么?我很困惑,哈哈。我的代码正常工作,但只想知道如何做?
这是我的代码:
import UIKit
class ViewController: UIViewController {
var timer = Timer()
var time = 210
@objc func decreaseTimer() {
if time > 0 {
time -= 1
timerLabel.text = String(time)
} else {
timer.invalidate()
}
}
@IBOutlet weak var timerLabel: UILabel!
@IBAction func play(_ sender: Any) {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.decreaseTimer), userInfo: nil, repeats: true)
}
任何建议将不胜感激。谢谢
答案 0 :(得分:3)
selector
本质上是在target
对象上动态搜索的函数的名称。问题在于,Swift没有提供任何反射API来按名称搜索方法,然后进行动态调用,而这只能在Objective-C中完成。因此,您必须使该方法可从Objective-C访问。