为什么按钮动作必须是用objc声明的函数?我对objc函数和func之间的区别以及为什么按钮不能简单地将其操作引用到func感到好奇。
编辑:我正在使用Swift。非常感谢您的宝贵时间。
var thisButton: UIButton = {
let button = UIButton(type: .system)
button.addTarget(self, action: #selector(thisFunction), for: .touchUpInside)
return button
}()
@objc func thisFunction() {
//stuff
}
答案 0 :(得分:3)
Swift生成仅对其他Swift代码可用的代码,但是 如果您需要与Objective-C运行时进行交互–所有UIKit, 例如–您需要告诉Swift该怎么做。
这就是@objc属性的来源:将其应用于 类或方法,它指示Swift将这些内容提供给 Objective-C以及Swift代码。因此,只要您想致电 UIBarButtonItem或Timer中的方法,您需要将其标记为 使用@objc的方法,这样就可以将其公开-包括所有其他 是Objective-C代码。
引用: