我有一个 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;
}