Вы не должны пытаться удалить объект из себя - это плохая практика, и в AS3 вы не можете сделать это наверняка.
Объект может быть может быть удален (т. Е. Собранный мусор), только если на этот объект не осталось ссылок. Поскольку ссылки всегда передаются по значению, а объект обычно не знает, какие ссылки на него существуют, вы не можете удалить объект из себя. Единственная полезная вещь, которую вы можете сделать, - это создать метод, который очистит все ресурсы, используемые экземпляром. Такой метод будет служить деструктором, но вам придется вызывать его вручную. Не забывайте, что прослушиватели событий также будут предотвращать сборку мусора, если вы не удалите их.
Существует также разница между delete
в создании свойства и установкой его в null
. Фактически delete
удалит свойство из экземпляра динамического класса. Принимая во внимание, что установка значения свойства на null
не удалит свойство, но сотрет любую ссылку, которая была сохранена там. Поэтому оба действия уничтожат ссылку, которая была сохранена в каком-либо свойстве. Обратите внимание, что вы не можете delete
объект, только свойство.
Существуют определенные хаки, которые можно использовать для запуска сборки мусора в флеш-плеерах 9 и старше. Однако недавно System.gc()
звонок стал доступен, что делает то же самое. Обратите внимание, что вы не можете полагаться на факт, что GC будет фактически вызываться. Это до флеш плеера.
Возвращаясь к вашему вопросу: Бросить событие и уведомить родителя о том, что что-то пошло не так, на самом деле хорошая идея. Вы должны придерживаться этого. Более того, лучше, если родитель узнает о таком событии таким образом, а не тогда, когда обнаружит, что некоторые свойства были волшебно обнулены.
P.S .: Чтение Гранта Скиннера статей на память во флеш-плеере - это действительно хорошая идея.