其原理简单说就是利用 Runtime 消息转发机制来转发方法,同时在调用方法的前后分别产生两种数据流
-
sendMessage
获取方法执行前产生的数据流
-
methodInvoked
获取方法执行后产生的数据流
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
//使用sentMessage方法获取Observable
self.rx.sentMessage(#selector(ViewController.viewWillAppear(_:)))
.subscribe(onNext: { value in
print("1")
})
.disposed(by: disposeBag)
//使用methodInvoked方法获取Observable
self.rx.methodInvoked(#selector(ViewController.viewWillAppear(_:)))
.subscribe(onNext: { value in
print("3")
})
.disposed(by: disposeBag)
}
//默认的viewWillAppear方法
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("2")
}
}
网友评论