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