我正在使用我继承的大型应用程序,并且遇到了一些最佳实践问题。
每次用户导航到我们的客户编辑页面时,都会创建一个新的演示者,并设置一个视图。有一个用于客户编辑的主演示者和一个主视图。主视图中也有由主演示者的子演示者使用的子视图。在子演示者中,我在事件总线上注册事件处理程序。
我遇到的问题是,当第二次导航到联系人编辑器时,会再次创建演示者,并再次注册这些事件。现在,当一个事件发生时,它会被处理两次,每个演示者实例一次。
演示者不受变量的约束,但子视图由主视图引用。难道是视图中的这个引用阻止了事件处理程序被删除?我的印象是,如果该对象被垃圾收集,事件处理程序将被删除。如果不是这种情况,我是否应该从事件总线中注销这些事件处理程序?
更新:演示者没有被垃圾收集。如果我可以修改代码以在不再需要这些演示者时删除对这些演示者的所有引用,它们是否会被收集,因此事件处理程序是否会被删除?