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