3

最近在学习 Haxe for Flash,并且有一些 ActionScript 3 的经验。

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

4

2 回答 2

10

我对 Haxe 了​​解不多,但deleteAS3 中的操作符实际上并不会删除对象。你真的不能在 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仅删除引用,而不是实际值,因此无法强制进行垃圾收集。

于 2010-09-18T11:28:48.100 回答
6

Marcus 已经解释了delete操作员的工作。如需在 Haxe 中使用,请参阅此页面

因此,Haxe 的等价物delete foo.buntyped __delete__(foo, "b")。如果您打算经常使用它,我建议您将其放入一个函数中;)

于 2010-09-19T18:00:45.070 回答