Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.03.2006, 12:54
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 1  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
По умолчанию garbage collector

Здравствуйте.
Есть класс А. У него есть метод а(). Внутри метода создается объект класса Б, который самостоятельно рисует мувиклип (именно рисует, не наследует от мувиклипа) - допустим, диалоговое окно. При нажатии кнопки диалогового окна, клип окна ремувится. Теперь вопрос - что будет с объектом Б. Подметет ли его мусорщик плеера?

Старый 14.03.2006, 13:39
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 2  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
инстанс на Б в классе А никуда ведь не девается. Значит не подметет

Старый 14.03.2006, 15:12
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 3  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
что значит "инстанс" - инстанс нэйм мувиклипа? нет-нет, клип удаляется. Вопрос о существовании ссылки на объект класса Б. Объект класса Б был задан внутри функции а(). Т.е. по завершении работы функции, все переменные, объявленные внутри нее, должны бы прекратить свое существование.

Старый 14.03.2006, 15:28
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 4  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
инстанс - ссылка на класс.
Клип удалился, но класс то это ведь не клип, с чего б ему удаляться?

Старый 14.03.2006, 15:40
Dimchansky вне форума Посмотреть профиль Отправить личное сообщение для Dimchansky Посетить домашнюю страницу Dimchansky Найти все сообщения от Dimchansky
  № 5  
Ответить с цитированием
Dimchansky

Регистрация: Jul 2005
Сообщений: 225
Отправить сообщение для Dimchansky с помощью ICQ
Обрабатывай вместе с удалением клипа в рамках класса Б инструкцию delete this
Ссылка на объект существует пока существует сам объект. Насколько я подозреваю, при очередной инвентаризации сборщик, не найдя объекта, убъет и ссылку на него.

Старый 14.03.2006, 15:40
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 6  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
Объект класса Б был задан внутри функции а(). Т.е. по завершении работы функции, все переменные, объявленные внутри нее, должны бы прекратить свое существование.

Старый 14.03.2006, 16:46
Dimchansky вне форума Посмотреть профиль Отправить личное сообщение для Dimchansky Посетить домашнюю страницу Dimchansky Найти все сообщения от Dimchansky
  № 7  
Ответить с цитированием
Dimchansky

Регистрация: Jul 2005
Сообщений: 225
Отправить сообщение для Dimchansky с помощью ICQ
Цитата:
Объектные типы
Объекты во Флэш МХ и похожи, и непохожи на объекты в Java. Общим свойством является то, что все объекты во Флэш доступны только по ссылке. Таким образом, создавая объект любым способом, мы получаем доступ лишь к ссылке на него. Сам объект хранится отдельно и напрямую недоступен. Например, мы пишем

a = new Object();

Теперь в а хранится ссылка на этот объект. Если вы специалист в С++, но не знаете Java, то обратите внимание, что оператор new вернул не указатель (в Java нет указателей), а ссылку.
.
.
.
Цитата:
Кроме ссылок, в объектах Флэш не хранится ничего. Даже методы - и те являются ссылками на объекты-функции. Сами же объекты хранятся отдельно и иначе как через ссылки нам недоступны. А объекты, на которые никто не ссылается, удаляет сборщик мусора. Детали работы этого сборщика остаются тайной. И подстегнуть его работу вручную, как это делается в Java, во Флэше, к сожалению, нельзя.
.
.
.
Цитата:
Есть специальное ключевое слово, позволяющее сделать ссылку, ведущую в пустоту. Это слово null. Присваивают null какой-либо ссылке в том случае, когда не хотят ее удалять совсем, но при этом желают явно обозначить, что пока что ссылка никуда не ведет. Но можно и удалить ссылку с помощью ключевого слова delete. Запомните, что во Флэше delete не удаляет объект, на который указывает ссылка. Он просто удаляет саму ссылку (тем самым, освобождая некоторое количество памяти). А объект будет удален сборщиком мусора, если на него больше никто не указывает. Когда настанет время.
См. ссылку


Последний раз редактировалось Dimchansky; 14.03.2006 в 16:52.
Старый 14.03.2006, 16:56
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 8  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
тоесть, при следующем обходе мусорщика объект прекратит существование. Я в общем то так и думал, но мне не хватало подтврждения. Спасибо, Dimchansky. delete this я пытался отработать, но trace сразу после него все равно выдавал Object. Конечно, можно поэкспериментировать, но сейчас просто мало времени. В любом случае, всем спасибо.

Старый 14.03.2006, 20:11
Homo Sapiens вне форума Посмотреть профиль Отправить личное сообщение для Homo Sapiens Посетить домашнюю страницу Homo Sapiens Найти все сообщения от Homo Sapiens
  № 9  
Ответить с цитированием
Homo Sapiens
 
Аватар для Homo Sapiens

Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
Ответ достаточно прост. Пока есть хотя бы один способ добраться до объекта - объект не будет удаляться сборщиком мусора.
__________________
Всё гениальное просто.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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