[英]rxswift block life cycle
我有一個這樣的視圖模式類:
class ViewMode {
let validateCountResult: Driver<Bool>
init(username: Driver<String>) {
validateCountResult = username
.flatMapLatest { username in
return // validate username
}
}
我有一個UIViewController
的子類,如下所示:
class ViewController : UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
let viewmode =
ViewMode(textfiled.rx.texttext.orEmpty.asDriver())
viewmode.validateCountResult.drive(onNext:{
// TODO Something
FuncA()
})
}
}
當 viewDidload 完成時,我相信 viewmode 也應該取消初始化。 但是我看到綁定仍然存在並且 FuncA 仍然被調用!
為什么會這樣?
理解綁定的最簡單方法是將關系視為兩個實體之間的連接:生產者,產生值。接收者,處理來自生產者的值。 接收者不能返回值。 這是使用 RxSwift 綁定時的一般規則。 綁定的基本功能是 bind(to:),要將一個 observable 綁定到另一個實體,需要接收者符合 ObserverType。
您應該通過創建DisposeBag
來處理您的Disposable
類型。
如果您不這樣做,則無法保證您的 viewController 甚至 deinits 或您的一次性類型也會被處理。 它們通過您的ViewMode
一起創建一個類似的對象,並且所有三個對象都保留在內存中。
看看這篇文章,看看如何找到內存泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.