Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   removeChild и сборка мусора (http://www.flasher.ru/forum/showthread.php?t=138467)

sinya 08.04.2010 18:27

removeChild и сборка мусора
 
Привет!

Хочу уточнить, как навсегда убрать мувиклип со сцены и из памяти. В учебниках рассказывают, что если нет слушателей и ссылок на обьект, то после removeChild(obj) он уходит в небытие.

у меня такой код:
Код:

var mc:MyMC = new MyMC();
addChild(mc);
mc.play();
removeChild(mc);

при выполнении этого кода mc исчезает, но код внутри него продолжает выполняться (я поставил трейс внутри него, и трейс периодически выводится, показывая, что mc проигрывается). Почему он не удалился? Неужели его нужно остановить перед удалением? Если он подметается сборщиком мусора не сразу, то когда?

random13 08.04.2010 18:29

я думаю как минимум на него ссылаются переменные

Zebestov 08.04.2010 18:48

блин да из кода же видно все. ты ж сам все правильно написал: если нет ссылок на объект. а сам что? removeChild(mc) сделал, а mc=null нет.

sinya 08.04.2010 19:11

гм, а когда мне писать mc = null? Если до removeChild(mc), то он не поймет, что ему ремувить, если после - то сборщик мусора разочаруется, т.к. при removeChild(mc), mc != null. Сам-то пробовал?

СлаваRa 08.04.2010 19:13

после removeChild

sinya 08.04.2010 19:27

При таком коде невидимый mc продолжает проигрываться:
Код:

var mc:MyMC = new MyMC();
addChild(mc);
mc.play();
removeChild(mc);
mc = null;


Bgg 08.04.2010 19:29

Больше кода давайте. Где то там у вас косяк.

Волгоградец 08.04.2010 19:37

Все правильно. Даже если нет ссылок, то не факт что ГЦ моментально заберет объект. Нужно вручную остановить его.

Psycho Tiger 08.04.2010 19:53

Я бы даже сказал, что факт, что ГЦ заберёт его не сразу.

sinya 08.04.2010 19:57

Цитата:

Больше кода давайте. Где то там у вас косяк.
Нет, я специально упростил и проверил у себя в том виде, в котором показываю.

Цитата:

Все правильно. Даже если нет ссылок, то не факт что ГЦ моментально заберет объект. Нужно вручную остановить его.
Ну вот я и хочу узнать, когда все-таки срабатывает GC. Я ждал минуту, ничего. )


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

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