在 Swift 中创建 @IBAction 时是否有理由选择发件人:任何?

Is there a reason to ever choose sender: Any when creating an @IBAction in Swift?

当您在 Xcode 中使用 IB/storyboards 创建一个 IBAction 链接界面对象(例如按钮)与代码文件中的方法。

既然你是从界面到代码这样做的,Xcode应该通过界面知道你使用的是什么类型的控件,例如UIButton,那么为什么它会自动将发件人设置为 Any 类型,而不是具体设置为 UIButton

是否有任何理由将其保留为 Any 而不是在创建时将其更改为 UIButton 类型?是从界面到代码,还是先在代码中创建IBAction

将按钮连接到视图控制器时获得的代码的基本示例,尽管从界面上的按钮进行控制点击:

@IBAction func playAgain(_ sender: Any) {}

我认为这是一个不合理的默认值。如果您的函数仅适用于单个 UI 控件,则 sender 应尽可能强类型化。

从技术上讲,您可以 定义一个 @IBAction,并将其绑定到多个 UI 不同类型的控件。但即使在这种情况下,像 NSView 这样更具体的类型也会比 Any.

更合适