AS3.0 对象键和内存管理

如果将 myObject 用作 Dictionary 对象中的键,则会创建对原始对象的另一个引用。例如,下面的代码创建两个对象引用
(myObject 变量和 myMap 对象中的键):
import flash.utils.Dictionary;
var myObject:Object = new Object();
var myMap:Dictionary = new Dictionary();
myMap[myObject] = "foo";
若要使 myObject 引用的对象能够进行垃圾回收,您必须删除对它的所有引用。在此情况下,必须更改 myObject 的值并从
myMap 中删除 myObject 键,如以下代码所示:
myObject = null;
delete myMap[myObject];
或者,可以使用 Dictionary 构造函数的 useWeakReference 参数,以使所有字典键均成为“ 弱引用”。垃圾回收系统忽略弱引
用,也就是说只具有弱引用的对象可以进行垃圾回收。例如,在下面的代码中,您不需要从 myMap 中删除 myObject 键就可以
使该对象能够进行垃圾回收:
import flash.utils.Dictionary;
var myObject:Object = new Object();
var myMap:Dictionary = new Dictionary(true);
myMap[myObject] = "foo";
myObject = null; // Make object eligible for garbage collection.

posted @ 2012-12-28 19:38  sdlwlxf  阅读(216)  评论(0编辑  收藏  举报