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 calldispose
immediately (@sergdot that‘s whyself.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