在 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
.
更合适
当您在 Xcode 中使用 IB/storyboards 创建一个 IBAction
链接界面对象(例如按钮)与代码文件中的方法。
既然你是从界面到代码这样做的,Xcode应该通过界面知道你使用的是什么类型的控件,例如UIButton
,那么为什么它会自动将发件人设置为 Any
类型,而不是具体设置为 UIButton
?
是否有任何理由将其保留为 Any
而不是在创建时将其更改为 UIButton
类型?是从界面到代码,还是先在代码中创建IBAction
?
将按钮连接到视图控制器时获得的代码的基本示例,尽管从界面上的按钮进行控制点击:
@IBAction func playAgain(_ sender: Any) {}
我认为这是一个不合理的默认值。如果您的函数仅适用于单个 UI 控件,则 sender
应尽可能强类型化。
从技术上讲,您可以 定义一个 @IBAction
,并将其绑定到多个 UI 不同类型的控件。但即使在这种情况下,像 NSView
这样更具体的类型也会比 Any
.