0

我有一个 ItemRenderers 扩展 IconItemRenderer 的列表...当我来到一个页面时处理该列表并在我离开时将其删除...

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

知道如何让他们收集垃圾吗?在探查器中,我看不到与我的代码(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;
    }
4

0 回答 0