Форум 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=174650)

expl 30.01.2012 17:00

2TanaTiX
Обнаруживается стандартными средствами: трейсами, дебаггером, профайлером. Просто если выставлена мягкая ссылка - ты нажмешь run gc в профайлере и не увидишь что от чего-то не отписался.

А использовать или не использовать мягкие ссылки:
1. Eсть ситуации, в которых отследить время, в которое надо удалить объект из словаря или отписать от события определить очень тяжело (в сущности надо будет релизовать маленкий GC на базе подсчета ссылок). Тут выбора и нет. Например видел ресурсный движок, который не заморачивался с выгрузкой ресурсов, а просто хранил все в Dictionary с мягкими ссылками (да, доверия к такой системе нет - а вдруг он через 1 секунду удалит, а нам ресурс опять потребовался - и опять грузи, т.е. нельзя настроить чтобы удалял через 30 секунд, например, но работала).
Еще где-то в ASwing в каком-то менеджере компоненты пихаются в Dictionary со слабыми сылками. Там можно было от этого избавиться, но пришлось бы использовать совсем другой подход, т.е. можно считать у них не было выбора.

2. Большинство ситуаций не такие, в них ясно, когда отписывать объект. И тут просто 2 полюса:
- отписаться, но перестраховаться слабыми ссылками
- отписаться не перестраховываясь - если уж что-то идет не так - то это надо видеть
Просто тяготею больше ко 2-му полюсу и все.

3. Не отписываться и везде слабых ссылок понавтыкать.
Чревато нагрузкой на проц.

TanaTiX 31.01.2012 15:43

Цитата:

не увидишь что от чего-то не отписался
У меня отписывание от событий уже на автомате... Как и мягкие ссылки.
1) Как-то не было у меня таких ситуаций и таких структур проектов...
2) У нас разные полюса :) Соглашусь, что оба имеют право на жизнь.
3) Это даже не вариант.


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

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