![]() |
Как правильно удалять Child -ов из памяти
Допустим есть Sprite, в который addChild-ом добавлены много экземпляров разных классов.
как правильно удалить из не всех детей Код AS3:
Но это мне кажется что это какой то костыль. Подскажите плиз как удалять детей бесследно. |
Визуально удалить это
Код AS3:
Цитата:
|
ну вот допустим код
Код AS3:
|
Цитата:
|
ну как видно из документации мусорщик не удаляет объекты на которые еще сохранились ссылки.
а на эти объекты сохранятся ссылки если создавать их в функции? |
Цитата:
Если не поле класса и наружу ссылок не выдавали, то ничего в памяти не останется. Как же вы интересно обратитесь к obj после выполнения кода этой функции? :) |
обращусь по слушателю мыши, прописанному в классе.
спасибо за ответы |
Про слушатели вы не упоминали.
Отписываться надо. |
Цитата:
Также ссылки на объекты порождаются в результате подписки на события. Еще ссылки вы можете создать вручную - поля класса, объекта, переменные и т.д. Про локальные переменные тоже надо упомянуть - локальные переменные(ссылки на объекты) удаляются после завершения выполнения функции или метода. Соответственно, нет ссылки - объект доступен сборщику мусора. Цитата:
|
тоесть если в экземпляре класса есть хоть одна паблик переменная или функция к которой есть обращение , или слушатель или где нибудь еще храниться ссылка на этот укземпляр , то мусорщик его не соберет?
|
А может быть как-то иначе? Плеер может взять и удалить из памяти любой объект, который Вы используете?
Не думаю, что кто-то стал бы программировать в такой среде. Плеер удаляет из памяти только те объекты, к которым Вы больше никак, никогда и никаким способом вообще не можете обратиться. Исключение составляют только мягкие ссылки на обработчики событий, которые Вы сами пометили как мягкие. Тогда да, ссылка есть, но объект может быть удален сборщиком мусора. |
Вообще, в программировании вариантов с уборкой объекта из динамической памяти всего два.
1) Это задача ложится на программиста. Объект удаляется из памяти явно, когда разработчик решил, что объект ему больше не нужен. 2) Объект будет удален из памяти сборщиком мусора, когда к нему нельзя будет обратиться(ну то есть на него ссылок нет, исключения-те самые мягкие ссылки), плюс еще несколько условий( например, это не обязано стартовать сразу итд). Также, если у нас два объекта, каждый из которых имеет ссылку только на другого, но внешних ссылок на эту пару нет-то они тоже могу быть удалены. Это не в as3 придумали. |
| Часовой пояс GMT +4, время: 13:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.