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

在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完成前一直取值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值