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

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

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

Регистрация: Oct 2012
Сообщений: 12
По умолчанию Вопрос по освобождению памяти

Есть некий класс TEST, который передаёт ссылку на свой метод в другой класс OTHER. Этот метод будет вызван внутри класса OTHER после выполнения запроса на сервер. Так вот, может ли быть удалён объект класса TEST, если на него никто не ссылается, но при этом один из объектов хранит ссылку на его метод?

То есть, может ли быть такое, что пока выполняется запрос, сборщик мусора удалит объект TEST, а потом объект OTHER обратится к несуществующему методу onRequestComplete и произойдёт ошибка?

Код AS3:
class Test
{
    function Test()
    {
       Other.instance.request(onRequestComplete);
    }
 
    function onRequestComplete():void
    {
     ...
    }
}

Старый 30.07.2013, 14:36
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Это можно проверить принудительным вызовом в цикле
Код AS3:
System.gc()
+ предварительно задержать ответ на сервере
__________________
return this...

Старый 30.07.2013, 14:42
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 3  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Так. Не надо никакого гц вызывать.

Цитата:
Так вот, может ли быть удалён объект класса TEST, если на него никто не ссылается, но при этом один из объектов хранит ссылку на его метод?
вы можете забыть все ссылки на объект прямо, но объект будет жить пока есть ссылка хоть на один метод.
Кстати ссылку на объект можно достать из метода через метод getSavedThis из пакета Sampler.
System.gc() забыть как страшный сон ибо он работает только в дебаге.
Таймаут от сервера значения не имеет, синхронная последовательность исполнения всё равно прервётся.
__________________
:)

Старый 30.07.2013, 14:42
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 4  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
А вы можете передаеть ссылку на метод без ссылки на экземпляр? Так не бывает. Т.е. ссылка на экземпляр TEST по-любому передается OTHER, пусть и неявно.

Старый 30.07.2013, 14:45
Sinepym вне форума Посмотреть профиль Отправить личное сообщение для Sinepym Найти все сообщения от Sinepym
  № 5  
Ответить с цитированием
Sinepym

Регистрация: Oct 2012
Сообщений: 12
Всё понял. Спасибо.

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

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

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


 


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


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