我有一个ItemRenderers的列表,扩展了IconItemRenderer ...当我来到一个页面时我处理该列表并在我离开时将其删除...
在开始时的探查器中我有1个List和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;
}