[英]RxSwift [weak self] is accessible to all other operators below
我正在使用 Rxswift 來設計 ViewModel。 下面是我寫的代碼。 在我的第一個 map 操作符中使用 [weak self] 並使用 guard 來解包值。
我意識到我在第一張地圖中展開的“自我”在第二張地圖和下面的所有其他運營商中仍然可用。
但是我不太確定為什么在下面的運算符中仍然可以使用 first map 運算符中的 unwrapped self 以及在其他運算符中使用它時是否會出現問題
let textObservable = input.subject
.map { [weak self] _ -> [String] in
guard let self = self else { return [] }
return [$0]
}.map { maps in
maps.map { text -> String in
return self.makeString(string: text)
}
}
但是我不太確定為什么在下面的運算符中仍然可以使用 first map 運算符中的 unwrapped self 以及在其他運算符中使用它時是否會出現問題
解包的 self 在下面的運算符中不可用。 您正在第二次關閉中對 self 進行新的保留。
是的,可能會有問題。 如果您將可取消對象存儲在由self
表示的對象中(這是正常做法),那么您已經設置了一個保留周期,並且永遠不會釋放 self 的內存......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.