Любые советы Haxe GC? - PullRequest
       32

Любые советы Haxe GC?

3 голосов
/ 18 сентября 2010

Недавно я изучаю Haxe для Flash и у меня есть опыт работы с ActionScript 3.

Я заметил, что в AS3 есть операция delete. Есть ли что-то вроде delete в Haxe? delete о GC? Есть ли какие-нибудь советы для новичков Haxe об управлении памятью?

Ответы [ 2 ]

10 голосов
/ 18 сентября 2010

Я мало что знаю о 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 удаляет только ссылки, а не фактические значения, и поэтому не позволяет принудительно собирать мусор.

6 голосов
/ 19 сентября 2010

Маркус уже объяснил, что делает оператор delete. Для использования в Haxe, пожалуйста, обратитесь к этой странице .

Таким образом, эквивалент Haxe delete foo.b равен untyped __delete__(foo, "b"). Если вы собираетесь его часто использовать, я предлагаю вам включить это в функцию;)

...