![]() |
Цитата:
1. У s есть ссылка не на A, а на enterFrameHandler. A и enterFrameHandler - это разные объекты. Да, enterFrameHandler является приватным методом A, но тем не менее, это разные объекты, правильно я понимаю? 2. Вы утверждаете, что при удалении А, удалится и его метод enterFrameHandler (хоть он и связан с s), так? 3. Но s не удалится при удалении A, потому что он в дисплей листе, правильно? |
A = enterFrameHandler в данном случае. Поэтому у s есть слабая ссылка на A.
|
Если это действительно так, то все становится на свои места. Хотя это специфическая инфа, которую я не встречал. Спасибо.
|
"A" ссылается на enterFrameHandler. enterFrameHandler ссылается на "A". Но на enterFrameHandler не ссылается никто из имеющих GC Root. Приходим к тому, что на "А" нет ссылок. "A" молча уходит со своими методами.
|
Вас опять не понятно. Вот эта строчка
Код AS3:
P.S.: не подумайте, что я тролль. Мне нужно докопаться до истины и сложить паззл у себя в голове. |
Цитата:
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-> — мягкая ссылка. |
Цитата:
|
Все ясно. Всем спасибо.
|
| Часовой пояс GMT +4, время: 16:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.