使用 PropertyChanged 或 WeakSubscribe?
Use PropertyChanged or WeakSubscribe?
跟踪 属性 变化的最佳方式是什么?
我有以下顾虑,所以我不能做出决定。
- PropertyChanged 可以防止垃圾回收收集使用其自己的 PropertyChanged 事件的 ViewModel?
- WeakSubscribe 是否可以在用于跟踪 ViewModels 自己的 属性 更改时随时消失?
有人测试过还是只知道答案?
一般来说,如果您使用 PropertyChanged
强订阅,就不会遇到问题....但是,在某些情况下,这可能会导致 "leaks" - 例如如果您订阅了一个生命周期比 "normal" ViewModel 更长的子对象(例如单例服务)。
不过,为了安全起见,您可以使用 WeakSubscribe
- 只要您在视图的成员字段中存储对 WeakSubscribe
调用返回的令牌的引用,那么这将确保订阅至少在您的视图在内存中时保持活动状态。
无论强弱,还有一个目标是……尽早发布事件订阅(无论强弱)。这将有助于防止在视图消失后触发事件回调。
跟踪 属性 变化的最佳方式是什么?
我有以下顾虑,所以我不能做出决定。 - PropertyChanged 可以防止垃圾回收收集使用其自己的 PropertyChanged 事件的 ViewModel? - WeakSubscribe 是否可以在用于跟踪 ViewModels 自己的 属性 更改时随时消失?
有人测试过还是只知道答案?
一般来说,如果您使用 PropertyChanged
强订阅,就不会遇到问题....但是,在某些情况下,这可能会导致 "leaks" - 例如如果您订阅了一个生命周期比 "normal" ViewModel 更长的子对象(例如单例服务)。
不过,为了安全起见,您可以使用 WeakSubscribe
- 只要您在视图的成员字段中存储对 WeakSubscribe
调用返回的令牌的引用,那么这将确保订阅至少在您的视图在内存中时保持活动状态。
无论强弱,还有一个目标是……尽早发布事件订阅(无论强弱)。这将有助于防止在视图消失后触发事件回调。