cell reuse & disposebag

For my project I‘ve made base cell

class TableViewCell: UITableViewCell {

   private(set) var disposeBag = DisposeBag()

   override func prepareForReuse() {
      super.prepareForReuse()
      disposeBag = DisposeBag() // because life cicle of every cell ends on prepare for reuse
   }
}

and now in your cell factory you should do:

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! DiaryItemCell

cell.commentButton.rx_tap
            .subscribeNext{
                showAlert("Hi")
            }.addDisposableTo(cell.disposeBag)

        return cell

All disposables (CompositeDisposable, SerialDisposable, AnonymousDisposable ...) have the same behavior.

  • once they are disposed, adding another disposable with addDisposable will call disposeimmediately (@sergdot that‘s why self.compositeDisposable.dispose() was causing that weird behavior ;)
  • they don‘t call dispose automatically on deinit

All classes named *Disposable are meant to be used while implementing your own Rx operators.

DisposeBag is meant to return ARC like memory management to subscriptions, and it will dispose all subscriptions (Disposables) it contains on deinit.

Hope this clears things up :)

 
时间: 2024-10-13 12:13:23

cell reuse & disposebag的相关文章

socket网络间通信初识

NSOperation: 1. 指定同一时间最大执行的操作数 queue.max…… 2. 设定队列中的任务时间的依赖关系 task1 依赖于 task2: task2 —> task1 3. 回到主线程(找到如何获取主队列的方式)[NSOperation mainQueue]: keyword: iOS main queue Socket: 网络中的两个程序通过双向的通讯,达到交换数据的目的. 发送(客户端):终端控制台 接收(服务器端):  终端控制台(sever.py) 资源:网页(www

UITableView 常用方法(转自CSDN)

一.概述 UITableView是iOS开发比不可少也是最重要的一个控件类.可以说任何一个做iOS开发的人都必须熟练使用和掌握它.本文主要就是提供一个学习使用TableView的指南. 要说UITableView必须要介绍他的几个亲戚:UITableViewDelegate,UITableViewDataSource,UITableViewCell.其中前两个是TableView遵守的两个protocol(别告诉我你不知道啥叫protocol哦).然后本文会再列出TableView最常用最重要的

UITableView使用指南

1) 初始化 UITableView对象 – initWithFrame:style: // 代码生成方式,如果你在nib里加的tableview不需要使用这个方法 2)配置TableView – dequeueReusableCellWithIdentifier: // 必须要实现的方法,与TableView同生同死 style property // 有两种 UITableViewStylePlain, UITableViewStyleGrouped,经常用 – numberOfRowsIn

UITableView 的方法总汇

一.概述 UITableView是iOS开发比不可少也是最重要的一个控件类.可以说任何一个做iOS开发的人都必须熟练使用和掌握它.本文主要就是提供一个学习使用TableView的指南. 要说UITableView必须要介绍他的几个亲戚:UITableViewDelegate,UITableViewDataSource,UITableViewCell.其中前两个是TableView遵守的两个protocol(别告诉我你不知道啥叫protocol哦).然后本文会再列出TableView最常用最重要的

IOS Table中Cell的重用reuse机制分析

原文:http://blog.csdn.net/omegayy/article/details/7356823 创建UITableViewController子类的实例后,IDE生成的代码中有如下段落: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = [NSString

iOS Tableview侧滑删除和移动cell的实现

慕课网上学习了tableview的使用,突然让我觉得iOS比android简单多了,可能是我的感觉吧.因为android实现list view侧拉删除,动态移动item过程还是稍微有点复杂的.但是iOS却只需要重写几个方法就可以实现了.我只能说iOS太神奇!我就跟着做了一下. 项目地址:Todo 看效果,UI还可以.先上storyboard结构图: navigate controller 实现一个导航栏.view controller 实现一个tableview,tableviewCell .

优化UITableView cell的滚动速度

1. 利用好instruments.先检测leaks,再去观察优化效果. 2. 重中之重在于tableview cell的初始化,建议在tableview delegate中只实现配置方法,渲染全扔到drawInRect中做. 3. 中心思想,instruments core animation的上下两栏 Core Animation的帧率在60FPS以上,但是保持稳定也很重要 Sampler栏,不要让坡度变化太大,尽量平稳且低,在wwdc中提过.上面帧频自然越高越好. 利用reuse来循环利用

开发进阶18_通过xib自定义Cell

UITableViewController 继承自ViewController,TableViewController自动给我们添加了dataSource和delegate. 里面只有一个UITableView 1.UITableViewController内部默认会创建一个UITableView *tableView 2.UITableViewController内部tableView的delegate和dataSource就是这个UITableViewController 3.UITable

TableViewCell reuse 重用 我认为的正确理解与使用方法

其实有点失望,因为用google搜索“uitableviewcell dequeueReusableCellWithIdentifier”出来一堆堆资深博主的文章.看了看,大部分都是在解决一个问题:使用重用时cell显示混乱的问题.该问题本身并不让我失望,失望的是博主们的解释. 首先,回顾一下UITableViewCell的重用,其基本逻辑就是tableView一开始会创建一屏幕的cell(如果有那么多)并把他们标记(Identifier),之后用户上下滑动tableView时,使用Identi