任何人都可以帮助理解为什么 Apple 决定使用 Target Action 设计模式来处理 UIButton 而不是委托模式的事件?
或者,我可以说为什么 Apple 为 UITextField 选择委托设计模式,即使同样的事情也可以通过 Target Action 来实现。
任何人都可以帮助理解为什么 Apple 决定使用 Target Action 设计模式来处理 UIButton 而不是委托模式的事件?
或者,我可以说为什么 Apple 为 UITextField 选择委托设计模式,即使同样的事情也可以通过 Target Action 来实现。
不同的方法有不同的权衡。不过,我认为按钮操作的关键在于您可以向按钮添加多个目标/操作。(一对多的关系。)委派是一对一的关系,因此使用委派设计模式不可能让一个按钮触发多个动作,可能针对不同的目标。
我认为如果苹果现在正在设计按钮处理,他们会使用块/闭包而不是 IBActions。该控件可以保存一组块和触发每个块的事件。
所有@IBAction
函数都具有三个签名之一;
functionName() -> Void
functionName(sender: Any) -> Void
functionName(sender: Any, forEvent event: UIEvent) -> Void
IBAction 不能接受任何其他参数并且不返回值。
委托允许使用带有不同参数和返回值的函数,而动作是跨UIView
子类的标准方法。
在某些类中,例如UITextField
,某些动作可以通过委托和动作方法来处理。我想这只是给你一些选择;如果您已经在实现委托函数,那么您也不需要实现动作处理程序。
这是因为 Apple 希望在代码中显示不同的模式。