【问题标题】:Any differences between @objc and IBAction when programmatically creating UIButton event?以编程方式创建 UIButton 事件时@objc 和 IBAction 之间有什么区别?
【发布时间】:2018-03-10 14:09:50
【问题描述】:
当从 Storyboard 中的 UIButton 创建事件处理程序时,Swift 在 func 之前添加 @IBAction。当以编程方式将事件添加到 UIButton 到 func 时,Swift 给出错误并说我需要在我的方法前面添加 @objc,但是当我添加 @IBAction 时,它也会编译。
在向我的UIButton以编程方式添加事件时,我应该使用 2 和哪一个之间有区别吗?
【问题讨论】:
标签:
swift
ibaction
target-action
【解决方案1】:
IBAction 前缀已经将方法暴露给了 Objective-C 运行时,因此无需额外添加前缀@objc。
由于 IB 代表 Interface Builder,因此在以编程方式创建按钮时无需使用它。它所做的一切(除了将方法暴露给 Objective-C 之外)就是让 Interface Builder 将函数列为连接检查器中的操作。