![]() |
В CASALib, как я понял, по destroy() удаляются все ссылки на объект только в тех объектах, которые сами имплементят интерфейс IDestroyable. Т.е. если пользоваться только CasaSprite, CasaMovieClip, CasaLoader, Interval, DestroyableEventDispatcher и иже с ними, то все будет волшебно!
|
А не проще провоцировать GC, вместо всего этого огорода? Вот например у silin-а есть http://silin.su/#AS3/utils/gc
|
Цитата:
|
Да... тему увели в сторону и я забыл о корнях проблемы =)
А можно подробней описать ситуацию, при которой на один объект есть неконтролируемое количество ссылок? |
Количество ссылок всегда контролируемое. Мы же создаем их сами. И обнулять должны тоже сами. Единственное исключение, насколько я знаю - Dictionary, GC на ссылки в Dictionary не обращает внимания.
|
ну тогда проблемы как таковой нет — где плодим, там и следим за "исчезновением популяции" ;)
|
bebop, не верно.
У Dictionary есть ключ weakKeys, по типу weakReference у EventDispatcher::addEventListener, который как раз указывает, учитывать ли GC эти ссылки, или не учитывать. К тому же, простое зануление ссылки на объект не даёт гарантии того, что это дело удалится из памяти. Если использована чертовски высокая завязанность (например, когда есть объект а и объект б, у объекта а тыща ссылок на объект б, а у объекта б тыща ссылок на а, зануляем ссылки на а и на б, но не зануляем ссылки из а на б и из б на а) то GC вполне может запутаться и решить, что это дело чистить не надо. Это я к пользе методов "псевдодеструкторов". |
Да, точно.
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +4, время: 16:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.