【发布时间】:2021-09-29 01:51:54
【问题描述】:
代码审查中要求我进行此更新。
来自:
func bind(errorText: Driver<String>) {
errorText.drive(onNext: { [weak self] text in
self?.set(text: text)
self?.accessibilityValue = text
}).disposed(by: disposeBag)
}
到:
func bind(errorText: Driver<String>) {
errorText.drive(onNext: { [weak self] text in
guard let self = self else { return }
self.set(text: text)
self.accessibilityValue = text
}).disposed(by: disposeBag)
}
区别在于self? 和guard。
在第一个代码中,我的印象是self? 在它调用的变量为零时被释放。还是第二种方式,使用guard let self,100% 确保self 被释放?谢谢
【问题讨论】:
-
我个人喜欢给它加点趣味,并将守卫命名为
strongSelf,以便更容易在视觉上看到该块被强引用。只是我的 2c
标签: ios swift xcode closures self