码迷,mamicode.com
首页 > 移动开发 > 详细

iOS设计模式之观察者模式

时间:2015-07-30 21:21:31      阅读:137      评论:0      收藏:0      [点我收藏+]

标签: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


版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS设计模式之观察者模式

标签:ios   设计模式   观察者模式   

原文地址:http://blog.csdn.net/judy_luo/article/details/47156369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!