使用 PropertyChanged 或 WeakSubscribe?

Use PropertyChanged or WeakSubscribe?

跟踪 属性 变化的最佳方式是什么?

我有以下顾虑,所以我不能做出决定。 - PropertyChanged 可以防止垃圾回收收集使用其自己的 PropertyChanged 事件的 ViewModel? - WeakSubscribe 是否可以在用于跟踪 ViewModels 自己的 属性 更改时随时消失?

有人测试过还是只知道答案?

一般来说,如果您使用 PropertyChanged 强订阅,就不会遇到问题....但是,在某些情况下,这可能会导致 "leaks" - 例如如果您订阅了一个生命周期比 "normal" ViewModel 更长的子对象(例如单例服务)。

不过,为了安全起见,您可以使用 WeakSubscribe - 只要您在视图的成员字段中存储对 WeakSubscribe 调用返回的令牌的引用,那么这将确保订阅至少在您的视图在内存中时保持活动状态。

无论强弱,还有一个目标是……尽早发布事件订阅(无论强弱)。这将有助于防止在视图消失后触发事件回调。