Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Количество ссылок на объект (http://www.flasher.ru/forum/showthread.php?t=143668)

bebop 24.08.2010 13:38

В CASALib, как я понял, по destroy() удаляются все ссылки на объект только в тех объектах, которые сами имплементят интерфейс IDestroyable. Т.е. если пользоваться только CasaSprite, CasaMovieClip, CasaLoader, Interval, DestroyableEventDispatcher и иже с ними, то все будет волшебно!

Zebestov 24.08.2010 13:54

А не проще провоцировать GC, вместо всего этого огорода? Вот например у silin-а есть http://silin.su/#AS3/utils/gc

bebop 24.08.2010 13:57

Цитата:

Сообщение от Zebestov (Сообщение 931021)
А не проще провоцировать GC, вместо всего этого огорода? Вот например у silin-а есть http://silin.su/#AS3/utils/gc

Какой смысл его провоцировать, если результата не будет?

Zebestov 24.08.2010 14:04

Да... тему увели в сторону и я забыл о корнях проблемы =)
А можно подробней описать ситуацию, при которой на один объект есть неконтролируемое количество ссылок?

bebop 24.08.2010 14:12

Количество ссылок всегда контролируемое. Мы же создаем их сами. И обнулять должны тоже сами. Единственное исключение, насколько я знаю - Dictionary, GC на ссылки в Dictionary не обращает внимания.

Zebestov 24.08.2010 14:14

ну тогда проблемы как таковой нет — где плодим, там и следим за "исчезновением популяции" ;)

Psycho Tiger 24.08.2010 14:27

bebop, не верно.

У Dictionary есть ключ weakKeys, по типу weakReference у EventDispatcher::addEventListener, который как раз указывает, учитывать ли GC эти ссылки, или не учитывать.

К тому же, простое зануление ссылки на объект не даёт гарантии того, что это дело удалится из памяти. Если использована чертовски высокая завязанность (например, когда есть объект а и объект б, у объекта а тыща ссылок на объект б, а у объекта б тыща ссылок на а, зануляем ссылки на а и на б, но не зануляем ссылки из а на б и из б на а) то GC вполне может запутаться и решить, что это дело чистить не надо. Это я к пользе методов "псевдодеструкторов".

bebop 24.08.2010 14:36

Да, точно.

Bgg 24.08.2010 14:52

Цитата:

Сообщение от bebop (Сообщение 931016)
В CASALib, как я понял, по destroy() удаляются все ссылки на объект только в тех объектах, которые сами имплементят интерфейс IDestroyable. Т.е. если пользоваться только CasaSprite, CasaMovieClip, CasaLoader, Interval, DestroyableEventDispatcher и иже с ними, то все будет волшебно!

Не, не будет, не помню точно уже почему, но destroy() удаляет не все ссылки.

bebop 24.08.2010 15:10

Цитата:

Сообщение от Bgg (Сообщение 931038)
Не, не будет, не помню точно уже почему, но destroy() удаляет не все ссылки.

У меня все удаляет :)


Часовой пояс GMT +4, время: 16:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.