Apache flex 未垃圾收集Flex Mobile IconItemRenderer

Apache flex 未垃圾收集Flex Mobile IconItemRenderer,apache-flex,memory,mobile,memory-leaks,itemrenderer,Apache Flex,Memory,Mobile,Memory Leaks,Itemrenderer,我有一个ItemRenders扩展IconItemRenderer的列表。。。当我来到一个页面时,我会处理列表,当我离开时,我会删除它 在开始的分析器中,我有1个列表和12个ItemRenders。。。过了一会儿,仍然有1个列表和我访问页面的数量*12个ItemRenders(4次访问,48个ItemRenders) 你知道我怎样才能把垃圾收集起来吗?在分析器中,我看不到任何与我的代码相关的内容(ObjectReferences) 对我来说唯一的提示是在IconItemRenderer中: pr

我有一个ItemRenders扩展IconItemRenderer的列表。。。当我来到一个页面时,我会处理列表,当我离开时,我会删除它

在开始的分析器中,我有1个列表和12个ItemRenders。。。过了一会儿,仍然有1个列表和我访问页面的数量*12个ItemRenders(4次访问,48个ItemRenders)

你知道我怎样才能把垃圾收集起来吗?在分析器中,我看不到任何与我的代码相关的内容(ObjectReferences)

对我来说唯一的提示是在IconItemRenderer中:

private function attachLoadingListenersToIconDisplay():void
{
    if (iconDisplay)
    {
        iconDisplay.addEventListener(IOErrorEvent.IO_ERROR, iconDisplay_loadErrorHandler, false, 0, true);
        iconDisplay.addEventListener(SecurityErrorEvent.SECURITY_ERROR, iconDisplay_loadErrorHandler, false, 0, true);
    }
}
听众似乎没有被删除

处理列表

if(myList)
        {
            myList.dataProvider = null;
            if(contains(myList))
            {
                myList.parent.removeChild(myList);
            }
        }
        myList= null;
有人有主意吗

更多信息:

我的ItemRenderer扩展了IconItemRenderer

我有一个UIComponent,其中包含一个列表:

override protected function createChildren():void
    {
        super.createChildren();

        ...

        myList= new List();
        myList.setStyle('contentBackgroundAlpha', 1);
        myList.setStyle('contentBackgroundColor', 0x333333);
        myList.setStyle("horizontalScrollPolicy", ScrollPolicy.OFF);
        myList.height = 6 * ROW_HEIGHT;
        myList.horizontalCenter = 0;
        myList.itemRenderer = new ClassFactory(MyItemRenderer);
        addChild(myList);

        if(myList.layout && myList.layout is VerticalLayout)
        {
            VerticalLayout(myList.layout).variableRowHeight = false;
            VerticalLayout(myList.layout).gap = 1;
        }

    }
并将其处置:

public function dispose():void
    {

        ...

        if(myList)
        {
            myList.dataProvider = null;
            if(contains(myList))
            {
                removeChild(myList);
            }
        }
        myList= null;
    }

何时调用“attachLoadingListenersToIconDisplay()”?它是渲染器的一部分吗?渲染器中是否有删除事件侦听器的代码?若否,;每次调用该方法时,您可以将事件侦听器堆叠在彼此之上。dispose列表代码在哪里调用?调用“parent.removeChild”给我留下了“off”的印象。以下步骤帮助我找到了阻止垃圾收集的悬空引用:iconDisplay是否属于同一个类,其中包含作为侦听器添加到该类中的方法?该类是否已从显示列表中删除?添加了更多代码。。。函数attachLoadingListenersToIconDisplay位于IconItemRenderer(FlexFramework代码)中,列表本身将从显示中删除list@NTyler... 如上所述,我以IconItemRenderer的attachLoadingListenersToIconDisplay结束