|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Цитата:
1. У s есть ссылка не на A, а на enterFrameHandler. A и enterFrameHandler - это разные объекты. Да, enterFrameHandler является приватным методом A, но тем не менее, это разные объекты, правильно я понимаю? 2. Вы утверждаете, что при удалении А, удалится и его метод enterFrameHandler (хоть он и связан с s), так? 3. Но s не удалится при удалении A, потому что он в дисплей листе, правильно?
__________________
http://volgogradetzzz.blogspot.ru/ |
|
|||||
Если это действительно так, то все становится на свои места. Хотя это специфическая инфа, которую я не встречал. Спасибо.
__________________
http://volgogradetzzz.blogspot.ru/ |
|
|||||
.
|
"A" ссылается на enterFrameHandler. enterFrameHandler ссылается на "A". Но на enterFrameHandler не ссылается никто из имеющих GC Root. Приходим к тому, что на "А" нет ссылок. "A" молча уходит со своими методами.
|
|
|||||
Вас опять не понятно. Вот эта строчка
говорит, что на enterFrameHandler ссылается s. weak reference = true говорит о том, что enterFrameHandler будет срабатывать до тех пор, пока жив s. Или я опять туплю - когда мы вызываем addEventListener, мы связываем s и А, так что ли??? P.S.: не подумайте, что я тролль. Мне нужно докопаться до истины и сложить паззл у себя в голове.
__________________
http://volgogradetzzz.blogspot.ru/ |
|
|||||
Цитата:
a.addEventListener("typeOfEvent", b.handler) -теперь a ссылается на метод b -b _не_ ссылается на a -эта связь помешает удалению b из памяти, когда на b не останется других ссылок -эта связь никак не помешает удалению a из памяти Если с мягкими ссылками - то "a ссылается на метод b" перестаёт учитыватся GC вот и всё. GC удаляет объект, когда на него не осталось внешних ссылок (ссылок из дисплей-листа, ссылок из статических полей классов, и т.д.) Ссылки от объектов, которые сами подлежат удалению GC не считаются. Что такое Объекты, которые подлежат удалению? - это объекты на которые нет ссылок объектов, _не_ подлежащих удалению. "Чтобы понять рекурсию надо понять рекурсию" |
|
|||||
.
|
Stage (GCRoot) --> внутренний список детей --> [object Sprite] --> внутренний список хендлеров -x-> (enterFrameHandler --> [object A])
--> — обычная ссылка. -x-> — мягкая ссылка. |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Нет! Никакого отношения к s эта строчка не имеет. Она обозначает, что слушатель будет срабатывать до тех пор, пока живсам слушатель (а не прослушиваемый объект)! Не s (объект, на котором слушают), а метод, который слушает. При этом GC связь между s и listener не учитывает, т.е. он не считает, что s использует enterFrameHandler и может собирать функцию (и объект), если на них нет других ссылок.
|
|
|||||
Все ясно. Всем спасибо.
__________________
http://volgogradetzzz.blogspot.ru/ |
Часовой пояс GMT +4, время: 13:40. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|