ObservationLite 1.0.1

ObservationLite 1.0.1

Evan Xie 维护。



  • Evan Xie

ObservationLite

ObservationLite 是一个非常轻量级的事件发布和事件观察的 Swift 库,功能也非常简单。当您不想引入 RxSwift 或其他异步编程的库时,只想实现简单的事件发布和订阅的话,ObservationLite 是一个不错的选择。

要求

  • iOS 9.0+ | macOS 10.10+ | tvOS 9.0+ | watchOS 3.0+

  • Xcode 11

集成

CocoaPods (iOS 8+, OS X 10.9+)

您可以使用 CocoaPodsSwiftyJSON 添加到您的 Podfile 中来安装它

platform :ios, '9.0'
use_frameworks!
target 'MyApp' do
    pod 'ObservationLite', '~> 1.0'
end

事件发布

事件发布有两个类:PublishSubjectBehaviorSubject。它们的区别:

  • PublishSubject:不记录最近发布的事件
  • BehaviorSubject:会记录最近发布的一个事件

例如:

let batteryLevelEventPublisher = BehaviorSubject(event: 0.0)
let chargingEventPublisher = PublishSubject<Bool>()

batteryLevelEventPublisher.publish(0.8)
chargingEventPublisher.publish(true)

事件监听

var chargingEvent: Observable<Bool> {
    return  chargingEventPublisher.asObservable()
}
    
var batteryLevelEvent: Observable<Double> {
    return batteryLevelEventPublisher.asObservable()
}

batteryLevelEvent.subscribe { (batteryLevel) in
    // Handle battery level event
}.dispose(by: disposeBag)

chargingEvent.subscribe { (isCharging) in
    // Handle new event
}.dispose(by: disposeBag)

Observer 的释放

当你订阅的时候,Observer 实际上就是您提供的闭包。那么何时释放它呢?这里引入了 RxSwift 中的 DisposeBag

订阅时,我们会将 Clousure 交给 disposeBag 管理起来。一旦 disposeBag 被释放,它管理的所有 disposes 将会触发销毁动作。