![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Представим себе такую последовательность действий:
1. Создаем объект (сохранив на него ссылку) 2. Отслеживаем наступления некоторого события (не связанного с помещением или удалением объекта в/из иерархии отображения) 3. Добавляем объект в иерархию отображения 4. Удаляем объект из иерархии отображения 5. Удаляем ссылку на объект, созданную на первом шаге По сути flash удалит объект, когда ему это понадобится, если ссылок на объект не осталось. Вопрос такой: понятно, что события, обозначенные в шаге 2 не наступят. Но удалится ли объект? Т.е. будет ли считаться, что мы стерли ВСЕ ссылки на объект? И еще момент: представим, что в наш объект были размещены другие объекты (ссылки на которые не сохранились), за которыми так же следили (addEventListener). После проделанных шагов 4 и 5, будут ли под-объекты считаться пригодными для выбрасывания? Надеюсь, достаточно четко объяснил суть вопроса. Заранее спасибо! |
|
|||||
|
.
|
Мне не совсем понятно, почему события в шаге 2 не наступят, но Вам виднее. Объект не удалится, потому что был шаг 1.
По моменту. addChild оставляет ссылку на ребенка у родителя в списке детей. Т. o. объекты не будут считаться пригодными для выбрасывания до тех пор, пока не произойдет removeChild. |
|
|||||
|
Цитата:
Но ссылки на родителя ведь уже нет. Почему не удаляются дети? |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
флеш не настолько умный. Все ссылки лучше занулять(включая удаляемых детей). И обязательно удалять всех слушателей.
|
|
|||||
|
Цитата:
как обойти всех детей - я знаю. тогда вопрос: как зная объект, найти всех назначенных слушателей (т.е. пару тип и значение слушателя)? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну вы же знаете, у кого и зачем подписались?
|
|
|||||
|
в общем случае - нет.
т.е. необходимо следить за каждым подписанием и сохранять его - тоже выход, конечно. просто не универсальный. спасибо. и можно на "ты". |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Как это? Я вот знаю где и на что я подписываюсь у объекта и при его удалении всё отписываю.
|
|
|||||
|
Цитата:
ведь так можно рассматривать объект, чтобы удалить всех его детей, добавленных методом addChild() не отслеживая этого. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В правильно начатом проекте проблемы отписывания от событий в принципе не возникнет.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|