![]() |
Удаление событийного объекта
Всем привет!
Кто может подсказать следующее: всем знаком метод и событийный объект: Код AS3:
Код AS3:
Код AS3:
Код AS3:
Но правильно ли это, присваивать каждый раз параметру функции onEnterFrame значение null? |
вы присваиваете объект события в переменную. так же можете ее и обнулить. сам объект при этом никуда не девается. а эта конструкция означает что по умолчанию переменная e равна null(если функция вызвана без аргумента)
|
Ах да, точно, торможу немного...
Тогда изменим пример, точнее просто добавим в тело функции onEnterFrame следующий код: Код AS3:
И опять вопрос, правильно ли это, стоит ли так писать и удаляет ли сборщик мусора каждый раз эту локальную переменную, да и вообще освобождается хоть чуть-чуть память? |
Нет, не верно. Это всего навсего локальная переменная, и присвоение ей значения null ничего не дает.
Да и вообще, присвоение null значения означает всего-лишь зануление ссылки на объект в конкретном месте. Это ни в коем случае не удаляет ничего из памяти и не означает, что на него нет других ссылок и он доступен для сборщика мусора. В as3 вообще нет средств для удаления чего-либо из памяти вручную. Если на объект занулить все ссылки, то он становится доступным для сборщика мусора, но и это не означает, что он его сразу удалит. Удаления мусора - это довольно ресурсозатратная операция, поэтому он копит определенное количество, и только после превышения разрешенного объема, начинает процесс удаления. Во время удаления мусора может легко провисать FPS или приложения может даже вообще на какое-то время остановиться, поэтому лучше не избавляться от ненужных в данный момент объектов, а по возможности использовать пулы. Но событий это не касается. Для них достаточно отписаться от слушателя. Я бы посоветовал почитать как работают ссылки в C++, там работа с памятью описана гораздо подробнее, и что такое ссылки и адреса в памяти будет намного яснее Ну и, конечно же, по as3 |
Цитата:
А мне вот все таки интересно, почему так? Чем это обосновано, что плохого в самостоятельном управлении памятью? |
В том, что платформа со сбощиком мусора, который занимается тем, что освобождает память, когда объекты никем не используются. Вообще бессымысленно заморачиваться на "удалении" объекта события. Даже если слушателей миллиард, то объект события будет один (за исключение ручного редиспатчинга)
|
Цитата:
|
romanlysenko
Код AS3:
То есть переменные сами лежат по каким то адресам и хранят какие-то адреса. А по тому адресу где лежит текстфилд, вот там да - лежит настоящий текстфилд. Если мы напишем Код AS3:
В переменных "b" и "c" все еще лежит адрес текстфилда. |
| Часовой пояс GMT +4, время: 18:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.