最近我正在学习Haxe for Flash,我有一些ActionScript 3经验.
我注意到delete
AS3中有一个操作,是否有像delete
Haxe 这样的东西?是delete
关于GC?有关Haxe新手关于内存管理的提示吗?
我对Haxe并不是很了解,但是delete
AS3中的运算符实际上并没有删除对象.你真的不能强迫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
仅删除引用,而不是实际值,因此不会强制您进行垃圾回收.
马库斯已经解释了delete
运营商的所作所为.要在Haxe中使用,请参阅此页面.
因此,等效HAXE的delete foo.b
是untyped __delete__(foo, "b")
.如果你打算经常使用它,我建议你把它放到一个函数中;)