美文网首页
RxSwift学习(7)KVO知识补充

RxSwift学习(7)KVO知识补充

作者: 忆痕无殇 | 来源:发表于2019-08-07 17:20 被阅读0次

网上好多关于OC的KVO介绍。在这里就不详细赘述了。参考KVO原理分析及使用进阶.
在RxSwift中使用todoNameTF.rx.observe(Element.Type, String)注册观察者。
找到具体的实现方法

 public func observe<Element: RawRepresentable>(_ type: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<Element?> where Element.RawValue: KVORepresentable {
        return self.observe(Element.RawValue.KVOType.self, keyPath, options: options, retainSelf: retainSelf)
            .map(Element.init)
    }

KVORepresentable找到

public protocol KVORepresentable {
    /// Associated KVO type.
    associatedtype KVOType

    /// Constructs `Self` using KVO value.
    init?(KVOValue: KVOType)
}

可以看到进行了初始化。'where'遍历元素的变化。返回self.observe方法。

 public func observe<Element>(_ type: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<Element?> {
        return KVOObservable(object: self.base, keyPath: keyPath, options: options, retainTarget: retainSelf).asObservable()
    }

RxCocoa 提供了 2 个可观察序列 rx.observe 和 rx.observeWeakly,它们都是对 KVO 机制的封装,二者的区别如下。

(1)性能比较
rx.observe 更加高效,因为它是一个 KVO 机制的简单封装。
rx.observeWeakly 执行效率要低一些,因为它要处理对象的释放防止弱引用(对象的 dealloc 关系)。

(2)使用场景比较
在可以使用 rx.observe 的地方都可以使用 rx.observeWeakly。
使用 rx.observe 时路径只能包括 strong 属性,否则就会有系统崩溃的风险。而 rx.observeWeakly 可以用在 weak 属性上。
这个参考(键值观察KVO的使用)

相关文章

  • RxSwift学习(7)KVO知识补充

    网上好多关于OC的KVO介绍。在这里就不详细赘述了。参考KVO原理分析及使用进阶.在RxSwift中使用todoN...

  • RxSwift

    为什么要学习RxSwift 使用RxSwift可以统一的处理Delegate、KVO、Notification,可...

  • 系统底层源码分析(1)——KVO

    在日常开发中经常会用到KVO,而RxSwift框架也有KVO,在了解RxSwift框架的KVO[https://w...

  • RxSwift(五)(Rxswift对比swift,oc用法)

    @TOC Rxswift 常用的数据处理 通知 实例1: 传统代码 Rxswift代码 KVO 实例2: 传统代码...

  • RxSwift(KVO底层探索)

    KVO底层探索请参考文章 KVO底层探索。 RxSwift对KVO的调用主要有两种方式: rx.observe()...

  • RxSwift之KVO

    KVO三板斧 RxSwift的KVO封装 1.rx.observe:高效,它是一个 KVO 机制的简单封装。 2....

  • 监听普通变量值的变化

    方法一 (KVO) 方法二 (Variable) 参考文章:Swift - RxSwift的使用详解64(键值观察...

  • RxSwift-KVO

    一、Swift-KVO 步骤一、添加观察 步骤二、观察回调 步骤三、移除观察 注意:监听的属性前 必须 加上 @o...

  • RxSwift(一)

    一、常用的RxSwift基本UI函数 1、通知 2、手势 3、kvo观察 4、scrollView 5、textF...

  • RxSwift学习插曲--Timer补充内容

    前言 在之前的一篇内容RxSwift学习--核心逻辑初探中,曾列举了一些使用RxSwift优势的小例子,其中关于T...

网友评论

      本文标题:RxSwift学习(7)KVO知识补充

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