RxSwift简单使用

1. 前言

ReactiveX(简写: Rx) 是一个可以帮助我们简化异步编程的框架。

RxSwift 是 Rx 的 Swift 版本。

它尝试将原有的一些概念移植到 iOS/macOS 平台。

你可以在这里找到跨平台文档 ReactiveX.io

KVO,异步操作 和 流 全部被统一成抽象序列。这就是为什么 Rx 会如此简单,优雅和强大。

2. 安装

通过CocoaPods安装

# Podfile
use_frameworks!

target 'YOUR_TARGET_NAME' do
    pod 'RxSwift', '~> 5.0'
    pod 'RxCocoa', '~> 5.0'
end

# RxTests 和 RxBlocking 将在单元/集成测试中起到重要作用
target 'YOUR_TESTING_TARGET' do
    pod 'RxBlocking', '~> 5.0'
    pod 'RxTest', '~> 5.0'
end

替换 YOUR_TARGET_NAME 喔

3. Quick Start

例如下 Button 的 Target Action 场景下:
传统方法实现:

button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)


@objc func buttonTapped() {
    print("button Tapped")
}

通过 Rx 来实现:

button.rx.tap
    .subscribe(onNext: {
        print("button Tapped")
    })
    .disposed(by: disposeBag)

你不需要使用 Target Action,这样使得代码逻辑清晰可见。

贴个完整的代码:

点击查看
import UIKit
import RxSwift
import RxCocoa

class ViewController: UIViewController {

    private var disposeBag = DisposeBag()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let button = UIButton(frame: CGRect(x: 20, y: 20, width: 100, height: 20))
        self.view.addSubview(button)
        button.backgroundColor = .red
        
        button.rx.tap
            .subscribe(onNext: {
                print("button Tapped")
            })
            .disposed(by: disposeBag)
    }

    
}

参考链接:RxSwift中文文档

原编辑时间 2020-12-1

posted @ 2021-11-24 13:06  Rogn  阅读(378)  评论(0编辑  收藏  举报