为什么我必须用@objc在Swift中创建一个函数



我是一名开发新手,目前正在学习Swift 4。我正在写一个鸡蛋计时器应用程序,我很困惑。我创建了一个函数来减少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)
}

任何建议都将不胜感激。谢谢

selector本质上是在target对象上动态搜索的函数的名称。问题是Swift没有提供任何反射API来按名称搜索方法,然后动态调用,这只能在Objective-C中完成。因此,您必须使该方法可从Objective-C访问。

最新更新