sendMessage和methodInvoked

2018-09-14  本文已影响19人  FallPine

其原理简单说就是利用 Runtime 消息转发机制来转发方法,同时在调用方法的前后分别产生两种数据流

获取方法执行前产生的数据流

获取方法执行后产生的数据流

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")
    }
}

参考文章:Swift - RxSwift的使用详解61(sendMessage和methodInvoked的区别)

上一篇 下一篇

猜你喜欢

热点阅读