平常我们使用 RxSwift 的时候,一般不会去直接使用 delegate,譬如要处理 tableView 的点击事件,我们会这样:tableView.rx.itemSelected.subscribe(onNext: handleSelectedIndexPath),这跟先设置一个 delegate,然后在 delegate 的 tableView(_:didSelectRowAt:) 方法中调用 handleSelectedIndexPath 的效果是一样的。那这个过程到底是如何进行的呢?我们进入 RxCocoa 的 UITableView+Rx.swift 文件来一探究竟,这个文件中不仅有 itemSelected,还有诸如 itemDeselected、itemAccessoryButtonTapped、itemInserted、itemDeleted、itemMoved 等等一系列对应 tableView delegate 的包装方法,本文就以 itemSelected 为例,其他的都是相同的原理。为便于理解,我会给源码加一点中文注释。