Ключевое слово delete во Flash используется для удаления определений переменных. Оно не удаляет объекты из памяти (это происходит за кулисами с помощью так называемого «сборщика мусора» («Garbage Collector»), а просто берет созданную вами переменную и избавляется от нее, делая ее недоступной и невидимой для итераторов (for..in циклы, и т.п.).
Внутренние механизмы Garbage Collector, или GC для краткости, знают когда физически удалять объекты в памяти — когда больше нет переменных, ссылающихся на них. Так, например, если у вас есть две переменные A и B и они обе ссылаются на ObjectX, удаление переменной A не приведет к удалению сборщиком мусора ObjectX из памяти. Однако, если вы удалите обе переменные A и B, больше не будет ссылок на ObjectX и GC будет знать, что объект нуждается в удалении из памяти
This content requires Adobe Flash Player.
Этот механизм работает практически одинаково для Flash 8 и Flash 9 (ActionScript 1, 2, и 3), однако в 8 были сделаны некоторые изменения для оптимизации GC. (Примечание: GC очищает память не сразу.)
Хотя GC и новая виртуальная машина, управляющая им, на самом деле не сильно изменились в ActionScript 3, что изменилось, так это поведение ключевого слова delete. Теперь ключевое слово delete работает только для динамических свойств экземпляров класса, но не для объявленных членов класса (переменных и методов). В ActionScript 1 и 2 delete можно было использовать для всего. ActionScript 3 позволит только удалить динамические переменные и заблокирует прочее.
This content requires Adobe Flash Player.
This content requires Adobe Flash Player.
Поскольку myVar в примере выше был объявлен как часть объявления класса, он не может быть удален в ActionScript 3.
Поскольку вы не можете удалять члены класса в ActionScript 3, если вы хотите, чтобы переменная больше не ссылалась на объект или значение в памяти, вы можете установить значение вашей переменной в null вместо ее удаления.
This content requires Adobe Flash Player.
Когда все ссылающиеся на объект переменные примут значение null, GC пометит его для удаления и со временем память будет очищена от него.