美文网首页
RAC一些操作(取消,更新UI,cell去除脏数据)

RAC一些操作(取消,更新UI,cell去除脏数据)

作者: 韩叨叨 | 来源:发表于2017-12-27 10:58 被阅读34次

在subscribe的三个方法中

  1. sendNext方法执行完毕继续进行sendNext;
  2. 再有错误信息时,执行error方法,执行完毕之后,进行执行disposableBlock;
  3. completed方法执行完毕之后,也进行执行disposableBlock;
后面两个方法都是在执行之后,自动执行disposableBlock进行取消订阅。

在执行disposableBlock块的时候,会执行RACDisposble的类方法disposableWithBlock。

为什么会有这样的一个操作,是因为再取消订阅时,有一些后续操作,像回收内存,释放对象。比如打开文件,再取消之后,需要关闭;也可以类比Java中,try-catch这样的操作

Disposable家族

RACScopedDisposable ——绑定对象生存期
RACSerialDisposable ——可替换的disposable包裹
RACCompoundDisposable ——多个disposable的包裹

要怎么更新UI呢?

通常的做法是使用操作队列但是ReactiveCocoa有更简单的解决办法,在flattenMap:之后添加一个deliverOn:操作就可以转到主线程上了。
注:如果你看一下RACScheduler类,就能发现还有很多选项,比如不同的线程优先级,或者在管道中添加延迟。

cell重用是内容重叠解决方案:

cell是重用的,可能有脏数据,所以上面的代码首先重置图片。然后创建signal来获取图片数据。你之前也遇到过deliverOn:这一步,它会把next事件发送到主线程,这样subscribeNext:block就能安全执行了。
cell.rac_prepareForReuseSignal:Cell复用时的清理。
takeUntil:当给定的signal完成前一直取值

相关文章

  • RAC一些操作(取消,更新UI,cell去除脏数据)

    在subscribe的三个方法中 sendNext方法执行完毕继续进行sendNext; 再有错误信息时,执行er...

  • RxSwift-MVVM

    MVVM核心在于数据与UI的双向绑定,数据的变化会更新UI,UI变化会更新我们的数据。那这种绑定操作谁来做呢?当然...

  • iOS常用一些小技巧

    一.取消tableView Cell的选中状态 取消之前 在cell数据(以下方法中) - (UITableV...

  • Swift-GCD

    延迟执行 异步进行耗时操作,主线程进行用户交互以及刷新UI的操作 处理多数据请求,所有请求完毕进行UI更新(数据进...

  • React学习随笔

    更新state、props中的复杂数据 数据操作 编辑数据 保存数据 取消编辑还原数据 删除数据 input的on...

  • tableView基本用法于常用属性

    一、tableView的属性 1.取消cell的分割线 tableView.separatorStyle = UI...

  • iOS-解决使用ReactiveCocoa时,点击Cell上Bu

    问题一:使用RAC时点击Cell上Button了连续触发事件 解决方法:添加takeUntil:cell.rac_...

  • 关于Angular脏检查机制

    什么是脏检查对脏数据的检查就是脏检查,比较UI和后台数据是否一致。 什么时候触发脏检查只有当UI事件、ajax请求...

  • 测试技能提升篇——脏读、不可重复读、幻读的区别

    脏读 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 不可重复读 事务 A 多次读取同一...

  • Handler 原理

    1.为什么要用Handler 在Android中主线程又称为UI线程,负责创建和更新UI,其他耗时操作如,访问数据...

网友评论

      本文标题:RAC一些操作(取消,更新UI,cell去除脏数据)

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