Показать сообщение отдельно
Старый 12.03.2009, 14:54
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 25  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Цитата:
Сообщение от BloodHouD
ни какой ГЦ не имеет отношения ни к какой событийной модели, и уж тем болие к её баблингу. Ваш пример не связывает больше 3х кусочков различных частей приложения, поэтому поймать тут, что-то типа утечки будет сложно... но если вдруг получится так, что Вам придётся передать хотя бы на одного ребёнка Test ссылку, вся ваша конструкция целиком повиснет в памяти после удаления, а не только тот несчастный ребёнок. и так как Денис разрабатывает приложение состоящие не из 2х классов, что-то мне подсказывает, что он не раз встречался с ситуацией, что случайно не убитый слушатель тянет за собой, целую ветку своих родителей, которые в свою очередь тянут за собой своих детей.
Да я не про GC и событийную модель. Я про то, что сама событийная модель тривиальна при отсутствии флэшовых фич и надо понять, как она работает. Я предположил, что из-за этих фич разные ссылки на объект и слушатель события создаются в родителях, родителях родителей и т. п. - из-за этого и надо удалять все вручную.

По поводу ссылок на ребенка Test - это логично, что вся конструкция повиснет в памяти, т. к. в самом этом ребенке есть ссылка на родителя. Но если делать объекты изолированными (взаимодействие с внешним миром через события и публичные функции самого объекта), то все будет удаляться нормально. Все равно ведь удаление детей и слушателей - перестраховка на случай что-то упустить.

iNils, лишние слушатели - это те, которые ловят событие не в target-фазе.
А если Вы не добавляете объект на сцену, эти слушатели не создадутся.


Последний раз редактировалось s8000_1; 12.03.2009 в 15:10.