Actionscript 3 Actionscript中的垃圾收集匿名函数
假设有一个类,它加载一组图像并发送一个Event.COMPLETE。我们称之为资产装载机 然后,我们有一个主文档类,它执行如下操作:Actionscript 3 Actionscript中的垃圾收集匿名函数,actionscript-3,flash,Actionscript 3,Flash,假设有一个类,它加载一组图像并发送一个Event.COMPLETE。我们称之为资产装载机 然后,我们有一个主文档类,它执行如下操作: var myAssetLoader:AssetLoader = new AssetLoader(); myAssetLoader.addEventListener(Event.COMPLETE, function():void { doStuffWithImages(); }); myAssetLoader.loadUR
var myAssetLoader:AssetLoader = new AssetLoader();
myAssetLoader.addEventListener(Event.COMPLETE, function():void {
doStuffWithImages();
});
myAssetLoader.loadURLS("http://example.com/image1.png", "http://example.com/image2.png");
//Some time later, after doStuffWithImages()
myAssetLoader = null
myAssetLoader会被完全垃圾回收吗?i、 e.没有任何removeEventListener?在将引用设置为null之前,您应该
removeEventListener
- 删除对对象的所有引用,以确保触发垃圾回收
- 将对显示对象的引用设置为null并不能确保对象已冻结。对象继续消耗CPU周期,直到被垃圾回收在将对象的引用设置为null之前,请确保正确停用对象
- 如果某个对象用作事件侦听器,则另一个对象可以引用它。如果是这样,在将引用设置为null之前,使用removeEventListener()方法删除事件侦听器
尽管如此,在另一个答案中给出的建议仍然是值得遵循的良好实践,即使您知道您的对象将获得g/c'd。谢谢,但这并不能真正回答问题。没有其他对象真正引用myAssetLoader,因此问题是事件侦听器是否仍会在内存中逗留,以及该侦听器是否为匿名函数是否会产生影响。我编辑了上面的内容来澄清这一点。