使用閉包時(shí),經(jīng)常需要考慮循環(huán)應(yīng)用的問題,在swift中,解決該問題比較簡單晰骑,使用閉包捕獲列表[unowned self] 或 [weak self]
-
區(qū)別:
- 如果捕獲(比如 self)可以被設(shè)置為 nil,也就是說它可能在閉包前被銷毀绊序,那么就要將捕獲定義為 weak
- 如果它們一直是相互引用硕舆,即同時(shí)銷毀的,那么就可以將捕獲定義為 unowned
textField.rx.text.orEmpty.asDriver().drive(onNext: {
[weak self] text in
// [unowned self] text in
DispatchQueue.main.asyncAfter(deadline: .now() + 4) {
print("當(dāng)前輸入內(nèi)容:\(String(describing: text))")
self?.label.text = text
}
}).disposed(by: disposeBag)