ios - RxSwift:单个可观察自我为零
问题描述
我正在尝试实现RxSwift
单个可观察的:
class Doctor {
var disposeBag = DisposeBag()
func sanityCheck() -> Single<String> {
return Single<String>.create {[weak self] observer in
if self?.amICrazy() == true {
observer(.success("Yes, you are crazy"))
}else {
observer(.error(someError.notCrazy))
}
return Disposables.create()
}
}
func amICrazy() -> Bool {
return arc4random_uniform(2) == 0
}
}
但问题self
总是零。
你们中的任何人都知道为什么self
是 nil 或如何解决它?
我会非常感谢你的帮助。
解决方案
您在创建闭包中使用weak
capture for ,因此除非您对对象持有强引用,否则一旦您离开分配上下文,它将被释放。self
Single
Doctor
顺便说一句,在最新的 swift 中,您可以使用它Bool.random()
来获取随机布尔值。
func amICrazy() -> Bool {
return Bool.random() // or just .random()
}
推荐阅读
- linkedin - 在linkedin上发布ugc视频时出现权限错误
- vue.js - 如何调整对象以在 vue-material 的 md-select 中使用?
- java - 存储并返回来自 kafka 的 REST 响应
- javascript - 限制正斜杠的指令
- html - 当使用 !important 将所有样式设置为白色时,移动电话链接显示为黑色
- r - bbox 中的子集类 sfc_LINESTRING 和 sfc 对象
- excel - 在 .xlsx 文件上自动执行“右键单击 + 打印”
- opencv - 在 gentoo 上的 libpng/png.h 上编译 opencv 失败
- tensorflow - GradientDescentOptimizer.minimize() 是如何工作的?
- javascript - 画线 JavaScript - 点击问题