1

我有一个带有复杂 UI(内置于 Flex 3.6)的大型应用程序。有很多嵌套组件,其中大多数都有事件侦听器或绑定设置器。结构类似于:

- Client View
         - Portfolio View
         - Personal data
         - etc. etc.
- Manager view
         - etc. etc.

有时我必须破坏客户端视图以重新初始化它;我所做的是将它从它的容器中取出;但似乎内存没有得到正确的垃圾收集(问题是事件侦听器和数据绑定的存在)。

阅读书籍和论坛我发现管理这种情况的最佳方法是删除对象销毁时的数据绑定和事件侦听器。但我怎么能做到这一点?谁告诉客户端视图层次结构的最后一个孩子它已被删除?

我已经通过“addToStage”和“removedFromStage”事件处理程序实现了它——它似乎有效,但它是一种解决方法;这个事件被调用了很多时间,这会减慢渲染速度。

所以我的问题是:我认为这个问题很常见,有更好的解决方案吗?

4

1 回答 1

0

为什么您认为根据组件在舞台上的外观来处理和重新激活组件是一种解决方法?这样做是很常见的,我个人认为没有什么特别的理由不这样做。

虽然我只从事移动项目,但这基本上与我处理组件的停用和重新激活的方法完全相同。一旦从阶段中删除,所有事件处理程序都会在再次添加组件时被删除并再次添加。除此之外,我还有一个完全释放组件的附加方法,因此首先删除事件侦听器,删除对对象的任何引用,最后将其置空。

于 2012-07-30T14:15:38.230 回答