Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Listeners (http://www.flasher.ru/forum/showthread.php?t=132798)

Касеал 20.11.2009 14:21

Listeners
 
При удалении объектов, как известно, слушатели не удаляются автоматически. Можно ли этому найти какой-то практическое применение? Если нельзя, то почему на Ваш взгляд, сборщик мусора не удаляет самостоятельно всех слушателей при удалении объекта.

Juice_Green 20.11.2009 14:30

а разве объект удалится из памяти, если на нем висят слушатели?

switcher! 20.11.2009 14:54

Цитата:

а разве объект удалится из памяти, если на нем висят слушатели?
удалится

P.S.
Цитата:

При удалении объектов, как известно, слушатели не удаляются автоматически
удаляются. При удалении объектов.
Если объект пригоден для сборки мусора, но еще не удален - слушатели по-прежнему работают.

Himerets 20.11.2009 15:15

Как ты удаляешь объект?

Juice_Green 20.11.2009 15:17

to switcher!: что то ваша теория не работает :)

Код AS3:

import flash.events.*;
import flash.display.*;
 
var t:Sprite = new Sprite();
t.addEventListener(Event.ENTER_FRAME, function(e:Event){trace(getTimer());});
 
t = null;
t=new Sprite();


switcher! 20.11.2009 15:34

это потому, что размер приложения слишком мал и GC бездействует.
Читаем Мука :) - страница 326 ("Сборка мусора в действии")

Juice_Green 20.11.2009 15:42

switcher! , ну так то да, пардон - поторопился :)
Касеал, предположу , что результатом практического применения будет полная непредсказуемость, так что лучше в полность подготовить объект для gc, чем частично

gloomyBrain 20.11.2009 16:05

Switcher!, тот же самый Мук на стр 263-265...
Цитата:

По умолчанию объект, регистрирующий приемник для определенного события, хранит ссылку на этот приемник до тех пор, пока его регистрация для указанного события не будет отменена явно, даже если в программе не осталось других ссылок на этот приемник.
То есть дело не в gc.
Дело в том, что если при возникновении некоего события должен выполниться метод экземпляра, то (даже если сам экземпляр был явно mc = null) ссылка на этот экземпляр продолжает висеть в памяти - следовательно для gc объект недоступен.
Эта ситуация решается использованием "слабой ссылки" при подписке на события

switcher! 20.11.2009 16:18

gloomyBrain, почитайте внимательно тему. Речь идет об объекте, на котором висят слушатели. А НЕ об объекте, который в этом слушателе указывает свой метод, как метод-обработчик. :)

gloomyBrain 20.11.2009 16:23

Согласен. *ушел просыпаться*


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

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