zoukankan      html  css  js  c++  java
  • 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 :)

     
    @kzaher
     
  • 相关阅读:
    异常及throw、与throws的介绍
    js数组
    正则表达式
    Date对象及toString方法
    js中函数与对象的使用
    js细节
    JavaScript介绍
    浮动、定位
    css背景样式
    盒子模型
  • 原文地址:https://www.cnblogs.com/Jenaral/p/5638913.html
Copyright © 2011-2022 走看看