3

最近、Haxe for Flashを学んでおり、ActionScript3の経験があります。

deleteAS3に操作があることに気づきましたがdelete、Haxeのようなものはありますか?deleteGCについてですか?メモリ管理に関するHaxe初心者向けのヒントはありますか?

4

2 に答える 2

10

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実際の値ではなく参照のみを削除するため、ガベージコレクションを強制することはできません。

于 2010-09-18T11:28:48.100 に答える
6

マーカスはすでにdeleteオペレーターが何をするかを説明しました。Haxeでの使用については、このページを参照してください。

したがって、Haxeに相当するものはdelete foo.bですuntyped __delete__(foo, "b")。あなたがそれをたくさん使うつもりであるならば、私はあなたがそれを関数に入れることを提案します;)

于 2010-09-19T18:00:45.070 に答える