美文网首页
racObserve键值观察

racObserve键值观察

作者: 我是小胡胡分胡 | 来源:发表于2018-05-16 15:36 被阅读174次

    racobserve

    分为2层

    1,信号化部分

    target(被观察对象) rac_valuesForKeyPath: keyPath(对应为被观察对象的keypath) options: observer:

    rac万物皆是流。此层是公开的。

    2,kvoWrapper

    kvo从observer-NSKeyValueObserving扩展 的方式 改为 observer-block的方式。

    这一层, 又拆分成 kvoWrapper, kvoTrampoline, kvoProxy 3个部分。 它是私有的,不对外暴露。

    系统的方法 obj addobserver: keypath: options: context:
    支持keypath多层路径的观察。 被观察对象 和keypath路径中的对象,都是被观察的。

    为了和系统一致, kvoWrapper的rac_observeKeyPath方法是递归的。
    分别对、 target对象, keypath路径的对象, 做观察。

    trampoline保存block,observer,target
    kvoProxy单例中的 NSMapTable strongToWeakObjectsMapTable 保存trampoline
    kvoProxy实现observer-NSKeyValueObserving扩展

    image.png

    相关文章

      网友评论

          本文标题:racObserve键值观察

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