Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.12.2011, 14:06
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 1  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Москва
Сообщений: 507
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
По умолчанию Корректное удаления экземпляра из памяти

Привет всем.
Простая ситуация: есть объект, в конструкторе создается кнопка, подписывается на MouseEvent.CLICK. Потом экземпляр этого объекта удаляется (removeChild) с родителя. Нужно ли отписать кнопку от MouseEvent.CLICK для корректного удаления из памяти?
Спасибо.


Последний раз редактировалось enepx; 13.12.2011 в 14:09.
Старый 13.12.2011, 14:07
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 2  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Да нужно.
__________________
http://www.chessmax.ru

Старый 13.12.2011, 14:08
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 3  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Москва
Сообщений: 507
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Знатоки говорят точно надо, сам стараюсь так и делать всегда, но может именно тут зря?
Удаление подписки за "внешние" объекты на обсуждается, вопрос именно о внутренних объектах класса.
Спасибо.

Старый 13.12.2011, 14:13
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Наличие слушателя равносильно наличию ссылки на объект. Удалив слушатель самостоятельно Вы упрощаете работу сборщику мусора (GC), таким образом увеличивая производительность всего приложения. Так что стоит взять за правило отписываться от всех событий и занулять все ссылки, если объект больше не нужен. И неважно - внутри самого объекта, или снаружи.
__________________
...вселенская грусть

Старый 13.12.2011, 14:15
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 5  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
но может именно тут зря?
Никогда не зря, плюс чистая совесть.
Цитата:
Удаление подписки за "внешние" объекты на обсуждается, вопрос именно о внутренних объектах класса.
А какая разница?

Добавлено через 31 секунду
Опоздал
__________________
http://www.chessmax.ru

Старый 13.12.2011, 14:21
smithy вне форума Посмотреть профиль Отправить личное сообщение для smithy Найти все сообщения от smithy
  № 6  
Ответить с цитированием
smithy

Регистрация: Oct 2011
Адрес: Питер
Сообщений: 58
В некоторых случаях можно использовать weakReference=true:
Код AS3:
_button.addEventListener( MouseEvent.CLICK, onClick, false, 0, true )
При сборке мусора такой листенер не будет являться ссылкой на объект.

Старый 13.12.2011, 14:25
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 7  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Москва
Сообщений: 507
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Это я все знаю и использую. Вопрос в целесообразности удаления подписки на объект, который является ребенком и "убивается" автоматически при "убийстве" родителя.

Старый 13.12.2011, 15:10
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 8  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Он не убивается, если на него есть ссылки. Это покажет любой профайлер.

Старый 13.12.2011, 15:13
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Слушатель клика не грузит память - это вам не интерфрейм или таймер, и даже не кастомЭвент, который может произойти от чего угодно ( по вашей реализации ) - соотв слушатель клика, овера и т.д. после ремува сносить не обязательно совершенно, но желательно в рамках красивой организации кода, и только
__________________
Марк Tween

Старый 13.12.2011, 15:15
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 10  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Слушатель клика не грузит память
Ок, пруф в студию.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.