簡體   English   中英

RxSwift [weak self] 可供以下所有其他運算符訪問

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM