package util { import mx.controls.listClasses.ListBase; import mx.core.IDataRenderer; import mx.core.mx_internal; use namespace mx_internal; /** * Clean up utility class * */ public class CleanUp { /** * Helper function that cleans up a list's item renderers. * *
The item renderers contain a data member that holds a reference to the data the list was * trying to display. The list doesn't clean up the item renderers data member when the list provider is set * to null. So, this reference prevents elements from being garbage collected and needs to be manually cleaned up
. * * @param list The list for wich the Item Renderers need to be cleaned up. * */ public static function cleanItemRenderersData(list:ListBase):void { var renderers:Array = list.rendererArray; // two dimensional array var renderer:IDataRenderer = null; for (var row:int = 0 ; row < renderers.length ; row++) { for (var col:int = 0 ; col < renderers[row].length ; col ++) { renderer = renderers[row][col] as IDataRenderer; if (renderer) renderer.data = null; } } } } }