RxSwift[weak self]可供以下所有其他操作员访问



我正在使用Rxswift来设计ViewModel。下面是我写的代码。在我的第一个map操作符中,使用了[weak self]并使用了guard来打开值。

我意识到,我在第一张地图中解开的"自我"在第二张地图和下面的所有其他操作符中仍然可用。

但我不太确定为什么在第一个地图算子中展开的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)
}
}

但我不太确定为什么第一个映射运算符中的展开self在下面的运算符中仍然可用,以及在其他运算符中使用它时是否会出现问题

展开的self在下面的运算符中不可用。在第二次结束时,你正在对自己进行新的保留。

是的,可能会有问题。如果你将可取消的存储在self表示的对象中(这是正常的做法(,那么你已经设置了一个保留周期,自我的内存永远不会释放。。。

最新更新