美文网首页
RxSwift 中的 retain cycle

RxSwift 中的 retain cycle

作者: Ajcc | 来源:发表于2019-04-03 11:23 被阅读0次

RxSwift 中的 retain cycle

case 1:

button.rx.tap
    .subscribe(onNext: { [weak self] (_) in
        // To be continue
    }).disposed(by: disposeBag)

这种情况是最常见的一种,因为 viewController 强引用了 button 而 button 又强引用了 viewController, 所以这里需要用 [weak self]
避免 retain cycle

case 2:

button.rx.controlEvent(.touchUpInside)
    .flatMapLatest({ [weak self] (_) -> Observable<User> in
        return HTTPClient.rx.getUser()
                        .catchError({ [weak self] (error) -> Observable<User> in
                           // catchError
                        })
    })
    .subscribe(onNext: {[weak self] (user) in
        // To be continue
    })
    .disposed(by: disposeBag)

这种情况比较特殊,因为第一个 flatMapLatest 没用调用到 self 的地方,我们往往会把上面的 [weak self] 省略掉,但如果这样会造成 HTTPClient.rx.getUser 的 block 即使用了 [weak self] 也会出现 retain cycle

相关文章

  • RxSwift 中的 retain cycle

    RxSwift 中的 retain cycle case 1: 这种情况是最常见的一种,因为 viewContro...

  • retain cycle(保留环)

    IOS中的block和retain cycle (经典) retain cycle 的产生 说到retain cy...

  • iOS简单学之8-变量的属性

    我之前写了一段代码 这段代码会提示retain cycle。 先说这个retain cycle Retain cy...

  • iOS中的retain cycle

    注释:本文通过查阅第三方资料整理 retain cycle的产生 说到retain cycle,首先要提一下Obj...

  • iOS八种内存泄漏问题

    循环引用(Retain Cycle) 先简单说一下什么是循环引用(retain cycle)​假设我们有两个实例A...

  • Masonry方法中Block无需使用WeakSelf 而 Re

    一、什么是 retain circle? retain cycle表示两个对象之间互相强引用/互相retain对方...

  • ARC中Retain Cycle的分析

    ARC移动开发iOSRetain Cycle内存管理解决方案开发经验摘要:对许多开发者而言,ARC最令人失望之...

  • Retain Cycle in Swift

    闭包 weak和unowned区别请自己看官方文档。 ‘不正常’的闭包 Swift中是可以将func赋值给闭包的,...

  • 学习笔记-retain cycle

    retain cycle产生情况 A和B两个对象,A持有B,B同时也持有A,A只有B释放之后才有可能释放,同样B只...

  • retain cycle循环引用

    block block在copy时都会对block内部用到的对象进行强引用的。 self将block作为自己的属性...

网友评论

      本文标题:RxSwift 中的 retain cycle

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