UIScrollViewDelegate
在 RxSwift / RxCocoa 中,您可以为委托(例如或)创建一个反应式包装器,CLLocationManagerDelegate
以便为某些委托方法启用 Rx 可观察序列。
我正在尝试为该UIApplicationDelegate
方法实现这个applicationDidBecomeActive:
到目前为止,我尝试的非常简单,类似于DelegateProxy
RxCocoa 中包含的子类。
我创建了我的DelegateProxy
子类:
class RxUIApplicationDelegateProxy: DelegateProxy, UIApplicationDelegate, DelegateProxyType {
static func currentDelegateFor(object: AnyObject) -> AnyObject? {
let application: UIApplication = object as! UIApplication
return application.delegate
}
static func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
let application: UIApplication = object as! UIApplication
application.delegate = delegate as? UIApplicationDelegate
}
}
和一个 Rx 扩展UIApplication
:
extension UIApplication {
public var rx_delegate: DelegateProxy {
return proxyForObject(RxUIApplicationDelegateProxy.self, self)
}
public var rx_applicationDidBecomeActive: Observable<Void> {
return rx_delegate.observe("applicationDidBecomeActive:")
.map { _ in
return
}
}
}
在我的 AppDelegate 中,我订阅了 observable:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// the usual setup
// and then:
application.rx_applicationDidBecomeActive
.subscribeNext { _ in
print("Active!")
}
.addDisposableTo(disposeBag)
return true
}
当我启动我的应用程序“活动!” 被打印出来,然后我在 RxCocoa 的_RXDelegateProxy_
类中得到以下崩溃:
有人知道问题可能是什么吗?或者有没有人成功实施过类似的东西rx_applicationDidBecomeActive
?