原文:Communication Patterns
Issue 7: Foundation · December 2013
By Florian Kugler
每个应用程序由包含多个或多个松散耦合的对象,这些对象常常需要相互通信才能完成应用的任务。在本文中,我们将介绍所有可用的选项,看看它们在苹果框架中如何使用的示例,最后总结何时使用哪种机制的的最佳实践建议。
虽然这个问题是关于Foundation
框架,我们将超出Foundation
框架中的部分通信机制– KVO
和Notifications
,还准备谈谈delegation
, blocks
, 还有 target-action
。
当然,在有些情况下,没有明确的答案说应该使用什么样的模式,而将选择归结为个人偏好问题,但也有很多情况(模式使用)是非常清晰明确的。
在本文中,我们经常使用“收件人”和“发件人”这两个术语,我们指的是在通信模式上下文中的意思,最好用几个例子来解释:表视图是发件人,而它的代理是收件人。一个核心数据管理对象上下文是它发布的通知的发件人,而不管它们是如何接收的。滑块是动作消息的发送者,实现这个动作的应答者是接收者。一个含有遵循KVO
属性的对象,在变化的是发件人,而对应的观察者是收件人。明白窍门了吗?