Корректное удаления экземпляра из памяти
Привет всем.
Простая ситуация: есть объект, в конструкторе создается кнопка, подписывается на MouseEvent.CLICK. Потом экземпляр этого объекта удаляется (removeChild) с родителя. Нужно ли отписать кнопку от MouseEvent.CLICK для корректного удаления из памяти? Спасибо. |
Да нужно.
|
Знатоки говорят точно надо, сам стараюсь так и делать всегда, но может именно тут зря?
Удаление подписки за "внешние" объекты на обсуждается, вопрос именно о внутренних объектах класса. Спасибо. |
Наличие слушателя равносильно наличию ссылки на объект. Удалив слушатель самостоятельно Вы упрощаете работу сборщику мусора (GC), таким образом увеличивая производительность всего приложения. Так что стоит взять за правило отписываться от всех событий и занулять все ссылки, если объект больше не нужен. И неважно - внутри самого объекта, или снаружи.
|
Цитата:
Цитата:
Добавлено через 31 секунду Опоздал |
В некоторых случаях можно использовать weakReference=true:
Код AS3:
|
Это я все знаю и использую. Вопрос в целесообразности удаления подписки на объект, который является ребенком и "убивается" автоматически при "убийстве" родителя.
|
Он не убивается, если на него есть ссылки. Это покажет любой профайлер.
|
Слушатель клика не грузит память - это вам не интерфрейм или таймер, и даже не кастомЭвент, который может произойти от чего угодно ( по вашей реализации ) - соотв слушатель клика, овера и т.д. после ремува сносить не обязательно совершенно, но желательно в рамках красивой организации кода, и только
|
Цитата:
|
Часовой пояс GMT +4, время: 12:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.