![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2009
Адрес: ХМАО
Сообщений: 47
|
Что-то я совсем запутался...
Допустим такая ситуация: Есть объект obj1, и на нём висит слушатель: Этот объект добавляется на другой объект: Теперь если сделать: Что произойдёт с obj1 и его слушателем? Они получается что в каждом объекте правильно вешать на REMOVED_FROM_STAGE - удаление всех его детей?
__________________
Тяжела и неказиста жизнь простого программиста. Распрекрасна и богата жизнь межзвёздного пирата. |
|
|||||
|
Регистрация: Aug 2009
Адрес: ХМАО
Сообщений: 47
|
Да, я так и сделал, спс. Память стало жрать существенно меньше.
Разобрался пока задавал вопрос)
__________________
Тяжела и неказиста жизнь простого программиста. Распрекрасна и богата жизнь межзвёздного пирата. |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
Не надо удалять всех слушателей и детей, это тратит ваши трудо-ресурсы.
obj1.addEventListener("event", listener) складывает в (какой-то там) массив, находящийся ВНУТРИ obj1 ссылку на listener. Таким образом сам listener не будет удален из памяти, пока obj1 существует. Если удаляем obj1, то он удаляется полностью. Опасна только такая ситуация: addEventListener("event", obj1.someMethod) В данном случае в каком-либо классе существует ссылка на obj1, и он не удалится. Хотя можно сделать weak reference в данном случае, и проблем опять же не будет. |
|
|||||
|
__________________
...вселенская грусть |
|
|||||
|
Ох да, где-то видел совершенно серьёзное замечание(может даже у Скиннера), что запланированный под удаление островок может и не удалиться из памяти, если он имеет слишком много замкнутых ссылок. Поэтому советуют всё-таки по-максимуму разбивать и зачищать ссылки.
|
|
|||||
|
Регистрация: Aug 2009
Адрес: ХМАО
Сообщений: 47
|
Спасибо всем. weakreference кажется полезной штукой. Нужно попробовать.
__________________
Тяжела и неказиста жизнь простого программиста. Распрекрасна и богата жизнь межзвёздного пирата. |
|
|||||
|
s8000_1 прав только в отношениях мыши.
Объект вне дисплай листа продолжает получать все события (например, ENTER_FRAME), что по сути ест ЦП, а ещё хуже это может как то изменять внешний мир (черт его знает). В итоге несуществующий объект "реально" существует. Отписывайтесь от всех событий, каких сможете (кроме MouseEvent, вне дисплай листа получить его нормальными путями невозможно)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
>Объект вне дисплай листа продолжает получать все события (например, ENTER_FRAME), что по сути ест ЦП
Речь шла о памяти. Объект с навешенным enter_frame все равно удалится. Другой вопрос, что функция вхолостую гоняться будет ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|