This blog (和其他人)声明在清理对象时,您应该在 dispose() 方法中将对象引用设置为 null。
但是,Actionscript 3(带有 Flash Player 9)使用 mark and sweep为您清除循环引用。所以我想知道:是否真的有任何理由取消您的对象引用?
最佳答案
我从不这样做 - 只要你做显而易见的事情:
- 中断对该对象的所有引用(从数组中删除,将存储对象的变量设置为空,从显示列表中删除)
- 移除所有事件监听器等
然后对象使用的内存可以随时覆盖。
var ar:Array = [];
var mc:MovieClip = new MovieClip();
mc.addEventListener(MouseEvent.CLICK, pants);
ar[ar.length] = mc;
addChild(mc);
if(mc.parent) mc.parent.removeChild(mc); // not garbage collected
mc.removeEventListener(MouseEvent.CLICK, pants); // still not garbage collected
ar.splice(0, 1); // finally garbage collected
关于flash - Actionscript内存管理,垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877674/