unowned
unowned要求被捕獲的變量不能為nil,所以在closure中使用[unowned self] 必須保證self不能為空,所以當(dāng)self被釋放后再執(zhí)行closure會(huì)導(dǎo)致程序崩潰。
let tapBackground = UITapGestureRecognizer()
tapBackground.rx.event.subscribe(onNext: {[unowned self] _ in
self.view.endEditing(true)
}).disposed(by: disposeBag)
view.addGestureRecognizer(tapBackground)
weak
weak允許被捕獲的值為可選型,即可以被捕獲的值為nil,當(dāng)使用[weak self]時(shí)需要進(jìn)行對(duì)self進(jìn)行解包?;蛘呤褂?br>
guard let strongSelf = self else { return }
let tapBackground = UITapGestureRecognizer()
tapBackground.rx.event.subscribe(onNext: {[weak self] _ in
self?.view.endEditing(true)
}).disposed(by: disposeBag)
view.addGestureRecognizer(tapBackground)