RxSwift
は強力な機能ですが、時には自分自身を脚で撃ってしまいます。 問題はResource count
とオブジェクトの割り当て解除で構成されています。 View ModelでCocoaAction
にlazy var
を使用します。それは、この流れの中で正常に動作します:メモリから削除メモリリークのない怠惰なCocoaAction#2方法
lazy var onCancel: CocoaAction = { [unowned self] _ in
return CocoaAction {
return self.coordinator.pop()
}
}()
Controller
とView Model
- 素敵!
外部を使用しようとすると問題が発生します。self
値は(オブジェクトは削除されません。なぜなら、アクションは強力なものだからです。reference
からself
)。ここでサイクルを避けるには?
2番目のケースでは、「return CocoaAction {[unowned this] _ in」を試しましたか? –
@OrkhanAlikhanov 'unowned'は、 '<>'ではなく、クラスとクラスにバインドされたプロトコルタイプにのみ適用できます。 –