Titanium:正确清理与非 window 视图关联的控制器

Titanium: correctly clean up a controller associated with a non-window view

我有一个 Alloy 应用程序,其中一个 window 分为两个视图:左侧是侧边栏菜单视图,右侧是主视图。 每次用户单击侧边栏中的不同菜单项时,我都会删除所有附加到主视图的子项并加载与该菜单项相关的 view/controller 并将其附加到主视图。我的问题:这就足够了吗?如果被删除的视图有附加到其中元素的事件监听器,它们是否也被清理了? 在加载新的 view/controller 或没有必要之前,我是否要保留对已实例化的每个控制器的引用并调用 controller.destroy() 和 controller.off()?

我问是因为没有 window 的视图无法将清理功能附加到 "onclose" 事件,因为 UI.View 元素不能 "closed" (仅 windows)。

那么在 Titanium 中处理这种情况的正确方法是什么?

事件侦听器可能会保留引用,尤其是您使用 Ti.APP.addEventListeners 添加它们。

因此,您应该在删除所有子视图时手动删除事件侦听器。