OC -> 观察者模式实现原理

2016-06-14  本文已影响630人  Mr_Kong

观察者模式实现原理

简介

观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当这个主题对象在状态发生变化时,会通知所有观察者对象,使得他们能够更新自己。

实现

观察者模式最常见的就是 KVO和 NSNotification

KVO
//这样点击 Button 的时候根据 keyPath 来更改 value 的值,然后实现 observer 的代理方法。

[self.buttonFor2FA addObserver:self forKeyPath:@"kvoNotification" options:NSKeyValueObservingOptionNew context:nil];```

[self.buttonFor2FA setValue:@"ddd" forKey:@"kvoNotification"];


NSNotification

NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];

[defaultCenter addObserver:self selector:@selector(defaultNotification:) name:@"testNotification" object:nil];

[defaultCenter postNotificationName:@"testlktej" object:nil];

###原理
 *  第一步
 *  调用一个单例方法,单例方法中要注意的是防止第一次调用没有结束,第二次调用就又开始了。
 *  这里我们一般用 GCD 或者用 @synchronized{}增加一个线程访问等待。
 *  这里面的话那, 这里创建单例的时候会用一个 NSMutableArray 来保存一个数组。为了防止存在多种单例进行保存。

 *  第二步
 *  创建 add 的过程就是创建一个数据模型将 observer,selector,name,object的信息保存到数组里面。
 */
 *  第三步
 *  post 通知的时候就是将数据中的数据进行遍历然后找到 name 对应的 observer 和 selector 进行方法的实现。
上一篇下一篇

猜你喜欢

热点阅读