Область применения AS3 и сборка мусора - PullRequest
0 голосов
/ 11 февраля 2011

Объекты, созданные внутри функции, автоматически помечаются для сборки мусора, если на них больше нет ссылок?

Допустим, у меня есть класс с именем SubClass.в конструкторе я создаю несколько displayObjects.Затем я устанавливаю SubClass где-нибудь.Когда я удалю этот экземпляр SubClass, будут ли объекты внутри помечены для сбора мусора?

заранее спасибо!ура Бруно

1 Ответ

2 голосов
/ 11 февраля 2011

Да, если у вас нет ссылок на членов Подкласса где-либо за пределами Подкласса или вы не оставляете активную ссылку на внешнюю часть вашего класса изнутри Подкласса (или каких-либо объектов внутри него).

Типичный примерпоследний, если SubClass подписывается на событие Stage;если прослушиватель не является слабым (5-й аргумент addEventListener), вы сохраните активную связь между сценой и вашим экземпляром SubClass, и даже если вы удалите объект и обнулите его, он не будет собран.Для простых слушателей вы можете установить для 5-го аргумента значение true, поэтому ссылка будет слабой и будет нарушена сборщиком мусора.В более сложных ситуациях (или, например, NetStreams, Loaders, Timeline audio и т. Д.) Вам необходимо создать для класса способ отсоединить себя от любых внешних объектов и остановить любой процесс, который может предотвратить сбор, например, публичное уничтожение.() метод, который закрывает запросы, останавливает медиа, removeListeners и т. д. *

Но опять же, для простых ситуаций, когда у вас есть только изолированные дочерние элементы, и нет ссылок на внешнюю часть вашего класса, просто удаляя ваш экземпляри обнуление его ссылки должно быть достаточно для сборки мусора.

...