我正在编写我的第一个 iPhone 应用程序,并且一直在探索 Cocoa Touch 和 Objective-C 中的设计模式。我有客户端 Web 开发背景,因此我正在努力了解代表。
具体来说,我不明白为什么需要委托对象而不是事件处理程序。例如,当用户按下按钮时,会使用一个事件进行处理(UITouchUpInside
),但是当用户完成文本框的输入并使用“完成”按钮关闭它时,该操作是通过调用文本框委托上的方法来处理的(textFieldShouldReturn
).
为什么使用委托方法而不是事件?我还在视图控制器中注意到了这一点viewDidLoad
方法。为什么不直接使用事件呢?
编辑:另一个好帖子:NSNotificationCenter 与委托(使用协议)?
委托是一个回调,因此存在 1:1 的关系。委托是实现正式协议的对象的单个实例。
通知(事件)基本上是向许多对某事发生时感兴趣的对象进行广播。
委托非常适合将代码插入到其他一些对象处理的管道中,例如回调之前和之后,为控件提供数据源以及视图之间的通信:
delegate 在 xcode ios 项目中到底做了什么?
因此,委托与对象有更紧密的关系,因为它们是插入和更改对象的处理或提供数据的单个提供的对象。您推迟了决策和外部操作,例如将数据加载到其他对象 - 这就是为什么它是通用 UIKit 类的非常常见的模式。对其他对象的通知是一种松散得多的关系 - 它只是通知其他对象发生了某些事情。
这也不一定是一个“vs”问题。例如,您可能有一个执行后台处理的应用程序,它触发了某些更改通知,导致视图调用其数据源委托来刷新其视图。它们是两种不同的机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)