0

任何人都可以帮助理解为什么 Apple 决定使用 Target Action 设计模式来处理 UIButton 而不是委托模式的事件?

或者,我可以说为什么 Apple 为 UITextField 选择委托设计模式,即使同样的事情也可以通过 Target Action 来实现。

4

3 回答 3

2

不同的方法有不同的权衡。不过,我认为按钮操作的关键在于您可以向按钮添加多个目标/操作。(一对多的关系。)委派是一对一的关系,因此使用委派设计模式不可能让一个按钮触发多个动作,可能针对不同的目标。

我认为如果苹果现在正在设计按钮处理,他们会使用块/闭包而不是 IBActions。该控件可以保存一组块和触发每个块的事件。

于 2016-12-14T12:08:00.647 回答
1

所有@IBAction函数都具有三个签名之一;

  • functionName() -> Void
  • functionName(sender: Any) -> Void
  • functionName(sender: Any, forEvent event: UIEvent) -> Void

IBAction 不能接受任何其他参数并且不返回值。

委托允许使用带有不同参数和返回值的函数,而动作是跨UIView子类的标准方法。

在某些类中,例如UITextField,某些动作可以通过委托和动作方法来处理。我想这只是给你一些选择;如果您已经在实现委托函数,那么您也不需要实现动作处理程序。

于 2016-12-14T12:18:59.793 回答
0

这是因为 Apple 希望在代码中显示不同的模式。

于 2017-09-19T08:34:58.257 回答