美文网首页
OC -> 观察者模式实现原理

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

作者: Mr_Kong | 来源:发表于2016-06-14 13:31 被阅读630次

观察者模式实现原理

简介

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

实现

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

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

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

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

  • (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
    {
    if ([keyPath isEqualToString:@"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 进行方法的实现。

相关文章

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

    观察者模式实现原理 简介 观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象...

  • KVO和KVC的理解

    KVO键值监听的使用 KVO是OC观察者模式的又一实现,使用了isa混写来实现的KVO KVO原理 1.运行时会创...

  • iOS KVO观察者模式的深入理解

    谈到KVO我们就会联想到『观察者模式』,其实KVO就是在oc中实现观察者模式。那下面就对观察者做一个简单介绍: 观...

  • iOS KVO的底层实现原理

    KVO 是 OC 观察者设计模式的一种KVO 的实现依赖于 OC 强大的 RuntimeKVO是Cocoa提供的...

  • 通知 /KVO、KVC相关

    如何实现通知机制? KVO ·kvo是OC对观察者设计模式的又一实现 ·APPLE使用了isa混写实现kvo KV...

  • Rxjava的基础操作符

    Rxjava原理介绍Rxjava原理 基于 一种扩展的观察者模式Rxjava的扩展观察者模式中有4个角色:被观察者...

  • KVO

    KVO在OC中是实现键值(key-value-observing)观察的方式,在设计模式中是典型的观察者...

  • KVO 原理

    概念 KVO 是 OC 对观察者模式的一种实现 Apple 使用了 isa混写技术(isa - swizzling...

  • Java设计模式之观察者模式

    Java设计模式之观察者模式 一直想写一篇学习观察者模式的总结没有契机,今天学习阻塞队列的原理时候看到在实现生产者...

  • KVO底层实现原理

    添加观察者方法实现原理 监听方法自动调用实现原理

网友评论

      本文标题:OC -> 观察者模式实现原理

      本文链接:https://www.haomeiwen.com/subject/mikudttx.html