RxSwift中PHPhotoLibrary扩展代码的两个return语句解析请求
关于RxSwift代码中两个return语句的疑问解答
别担心,这两个return完全属于不同的代码上下文,根本不是一回事,我给你拆解清楚:
第一个 return Observable.create(...)
这个是计算属性authorized的返回语句。你看,authorized的类型是Observable<Bool>,所以我们必须返回一个符合这个类型的实例。Observable.create()是RxSwift提供的创建Observable的基础方法,我们传入的闭包定义了这个可观察序列什么时候、发送什么事件。整个authorized属性的核心就是返回这个我们自定义逻辑的Observable。
第二个 return Disposables.create()
这个是传给Observable.create的闭包的返回语句。RxSwift的规则是:当你用create创建Observable时,传入的闭包(官方叫它subscribeHandler)必须返回一个Disposable对象。这个Disposable的作用是当订阅被取消时,执行资源清理工作——比如取消正在进行的网络请求、移除通知监听、停止定时器等等。
在你的这段代码里,我们没有需要清理的资源(既没有长时间运行的任务,也没有注册的监听),所以直接返回一个空的Disposables.create()就足够了,它代表“没有需要清理的操作”。
再补个小细节:当有订阅者订阅这个authorized Observable时,就会执行Observable.create里的闭包逻辑——先在主线程检查相册权限:
- 如果已经授权,就立刻发送
true事件,然后结束序列; - 如果没授权,先发送
false事件,然后调用系统的权限请求方法,等用户做出选择后,再发送最终的授权状态,然后结束序列。
内容的提问来源于stack exchange,提问作者Faizan Ellahi
相关产品推荐
相关产品推荐

