iOS设计模式之观察者模式

观察者模式:

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.


何时使用观察者模式

(1):对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变

(2): 一个对象必须通知其他对象,而他又不需要知道其他对象是什么.

(3): 有两种抽象类型相互依赖,将他们封装在各自的对象中,就可以对他们单独进行改变和复用. 


Cocoa Touch框架中使用观察者模式


1:通知类型:

使用NSNotificationCenterNSNotification对象实现一对多的交互,允许目标和观察者以一种耦合的方式通信,而两者不需多少了解.



例如模型构造一个通知放到通知中心:


NSNotification *notification = [NSNotification notificationWithName:@“data change”object: self];

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

[notificationCenter postNotification: notification];


任何要订阅这个通知的对象,首先需要为自己进行注册

[notificationCenter addObserVer : self

selector:@selector(update:)

name:@“data change”

object:subject];


2:键 — 值观察

这一机制基于NSKeyValueObserving非正式协议,Cocoa通过这个协议为所有遵守协议的对象提供了一种自动化的属性观察能力.KVC基于有关非正式协议,通过存取对象属性实现自动观察




/*      注册观察者   */

[_walkeraddObserver:selfforKeyPath:@"age"options:NSKeyValueObservingOptionNewcontext:nil];


/*  KVO function 只要objectkeyPath属性发生变化,就会调用此函数 */


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值