以编程方式创建 UIButton 事件时,@objc 和 IBAction 之间有什么区别吗?

Any differences between @objc and IBAction when programmatically creating UIButton event?

从 Storyboard 的 UIButton 创建事件处理程序时,Swift 在 func 之前添加 @IBAction。当以编程方式将事件添加到 UIButtonfunc 时,Swift 给出错误并说我需要在我的方法前面添加 @objc,但是当我添加 @IBAction,它也编译。

在以编程方式向我的 UIButton 添加事件时,这 2 和我应该使用哪个有区别吗?

IBAction 前缀已经将方法公开给 Objective-C 运行时,因此无需再添加 @objc.

前缀

由于 IB 代表 Interface Builder,因此在以编程方式创建按钮时没有必要使用它。它所做的一切(除了将方法公开给 Objective-C 之外)是让 Interface Builder 将函数列为连接检查器中的一个操作。