5种常见的消息传递机制及其区别

如题所述

第1个回答  2022-07-10
常见的消息传递方法有以下5种

第一种:KVO对象属性改变时的通知机制,当对象的某个属性发生变化,进行某项操作的时候,就可以使用KVO的消息传递。使用KVO的前提:消息的观察者需要知道谁是消息的发送者;观察者需要知道发送者的生命周期,因为KVO不会对self进行强引用,如果观察者的生命周期结束了,self被释放,所以添加的监听需要被移除。

第二种:通知机制广播消息,要在两个不相关的模块进行消息传递时,可以使用通知,不需要知道发送者是哪个,同时通知可以发送任何的消息,但是通知的消息传递是单向的,我们不能回复一个通知。

第三种:Target-Action:是UI事件的消息传递方式,target-Action 在消息的发送者和接收者之间建立了一个关系。消息的接收者和发送者互不知道对方。如果 target 是 nil,action 会在响应链中被传递下去,直到找到一个响应它的对象。在 iOS 中,每个控件甚至可以和多个 target-action 关联。但是发送的消息不能携带自定义的信息。

第四种:Block 通常可以完全替代 delegation 消息传递机制的角色,不过使用block要注意避免出现循环引用。

第五种:delegate 发送者需要知道接受者是哪个,代理可以自定义任何的方法,按照自己的需求传递信息,可以用方法参数来传递消息内容,delegate 可以通过返回值的形式来给发送者作出回应。

ObjC 中国 - 消息传递机制
相似回答
大家正在搜