任何Haxe GC提示?

时间:2010-09-18 11:04:41

标签: actionscript-3 memory-management garbage-collection haxe

最近我正在学习Haxe for Flash,我有一些ActionScript 3经验。

我注意到AS3中有一个delete操作,在Haxe中有类似delete的内容吗?关于GC的delete是?有关Haxe新手关于内存管理的提示吗?

2 个答案:

答案 0 :(得分:10)

我对Haxe并不是很了解,但AS3中的delete运算符实际上并没有删除对象。你真的不能强迫AS3解构。 delete运算符用于删除对动态对象的属性的引用。例如:

var foo:Object {
    a: "Hello, ",
    b: "world!",
    toString: function () { return a + b; }
}

foo.toString() // Hello, world!

此匿名对象是动态的,可以添加或删除属性。就像哈希表一样。现在考虑以下内容:

delete foo.b;
foo.toString(); // Hello, undefined

发生删除时,foo会释放对属性b的引用,并将其设为undefined。但是b的值不一定从内存中删除。如果其他人引用相同的值,它很可能会坚持下去。因此,delete仅删除引用,而不是实际值,因此不会强制进行垃圾回收。

答案 1 :(得分:6)

马库斯已经解释了delete运算符的作用。要在Haxe中使用,请参阅this page

因此,delete foo.b的Haxe等价物是untyped __delete__(foo, "b")。如果你打算经常使用它,我建议你把它放到一个函数中;)