Mar*_*rty 5 flash garbage-collection actionscript-3
我想知道ObjectFlash中垃圾收集的具体类型.
我知道在这种情况下,物品将为垃圾收集做好准备:
// create
var ar:Array = [];
var mc:MovieClip = new MovieClip();
mc.addEventLisntener(blah, blah);
ar.push(mc);
addChild(mc);
// kill & gc
ar.splice(0, 1);
mc.removeEventListener(blah, blah);
removeChild(mc);
Run Code Online (Sandbox Code Playgroud)
但是如何/将如何Object在下面的情况下收集垃圾.
假设我在我的课程MartysMC中有一个函数可以解析Object:
package
{
import flash.display.MovieClip;
public class MartysMC extends MovieClip
{
/**
* Updates this
* @param obj An object containing key/value pairs to represent new property values
*/
public function update(obj:Object):void
{
var i:String;
for(i in obj)
{
this[i] = obj[i];
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我像这样使用这个函数:
var mmc:MartysMC = new MartysMC();
var dataObject:Object =
{
x: 10,
y: 34,
alpha: 0.6
};
mmc.update(dataObject);
Run Code Online (Sandbox Code Playgroud)
怎么了dataObject?这会从这里收集垃圾吗?即便如此,这一行中的对象如何:
mmc.update({x:15,y:18,name:"marty"});
Run Code Online (Sandbox Code Playgroud)
要查看 GC 发生的情况,您可以使用将弱引用设置为 true 的字典,并使用要检查的对象作为键:
var d:Dictionary = new Dictionary(true)
d[myObject] = whatever
Run Code Online (Sandbox Code Playgroud)
当该对象不再可用时,它将从字典中删除。
这是基于您在 Wonderfl 的示例的完整示例: http ://wonderfl.net/c/e9W4
您会看到两个对象很快就被垃圾收集了。