你的位置:首页 > 软件开发 > 操作系统 > iOS中消息的传递机制(KVO、Notification、delegation、block以及target

iOS中消息的传递机制(KVO、Notification、delegation、block以及target

发布时间:2015-07-05 00:00:15
注1:本文由破船[博客]译自Communication Patterns。 本文目录如下所示:可用的机制做出正确的选择Framework示例 小结每个应用程序或多或少,都由一些松耦合的对象构成,这些对象彼此之间要想很好的完成任务,就需要进行消息传递。本文将介绍所有可用的消 ...

iOS中消息的传递机制(KVO、Notification、delegation、block以及target

注1:本文由破船[博客]译自Communication Patterns。上图中,还有一些细节需要做更近一步的解释:当然KVO也不是唯一的选择。我们可以这样设计:operation queue作为operation的delegate,operation会调用类似operationDidFinish: 或 operationDidBeginExecuting: 这样的方法,来将它的state传递给queue。这样一来,就不太方便了,因为operation需要将其state属性保存下来,一遍调用这些delegate方法。另外,由于queue不能主动获取state信息,所以queue也必须保存着所有operation的state。Delegation如果消息传递中,不包含选中cell的index path,而是每当选中项改变时,我们主动去table view中获取到选中cell的相关信息,会怎样呢?其实这会非常的麻烦,因为这样一来,我们就必须记住当前选中项相关数据,以便获知被选中的cell。还有其它可选的机制吗?当然有了,苹果自己的NSURLConnection就是最好的例子。NSURLConnection在block问世之前就已经存在了,所以它并没有利用block进行消息传递,而是使用delegation机制。当block出现之后,苹果在NSURLConnection中添加了sendAsynchronousRequest:queue:completionHandler:方法(OSX 10.7 iOS 5),因此如果是简单的task,就不必在使用delegate了。如果taget已经明确指定了,那么action消息回直接发送给指定的对象。如果taget是nil,action消息会以冒泡的方式在响应链中查找一个能够处理该消息的对象。此时,我们拥有一种完全解耦的消息传递机制——发送者不需要知道接收者,以及其它一些信息。

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:iOS中消息的传递机制(KVO、Notification、delegation、block以及target

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。