PDA

Просмотр полной версии : Освобождение памяти


zlatko
13.05.2008, 20:49
В глобальных просторах моего кода существует такая переменная :


// MyTitleWnd - потомок TitleWindow
public var wnd:MyTitleWnd = null;


Потом где-то в обработчике события от пользователя я ее инициализирую :


wnd=MyTitleWnd(PopUpManager.createPopUp(DisplayObject(Application.application),MyTitleWnd));


А теперь, когда пользователь жмет на крестик, окно должно закрыться :


protected function closed():void
{
PopUpManager.removePopUp(this);

//*** правильно ли будет тут написать :
delete wnd;
wnd = null;
//***
}


п.с. кто не увидел, вопрос в последнем участке кода...

etc
13.05.2008, 22:47
delete работает для динамически добавленных свойств к объекту.

zlatko
14.05.2008, 00:00
Ну на счет delete согласен, а wnd = null; можно оставить ? Как-то это странно выглядит, внутри объекта обнулять на него указатель...

п.с. я немножко недоозвучил, приведенная функция closed() это метод класса MyTitleWnd.

etc
14.05.2008, 13:56
А wnd чья переменная?

zlatko
14.05.2008, 14:45
wnd - статическая переменная некоторого класа(опять же извиняюсь за недоозвучку), тоисть доступаюсь к ней из любого места программы. Cделал так, для того что бы если придет от пользователя событие открыть данное окно, проверить открыто ли оно уже(тоисть wnd != null). Возможно тоже криво, но как есть...

п.с. предложения по поводу запрещать пользоваетелю даже пробовать открывать уже открытое не принимаються ;)
Хочу разобраться...

etc
14.05.2008, 15:21
Ничего криминального в занулении нет. Только, если окно само зануляет переменную, то оно же должно эту переменную устанавливать на себя, а не тот класс, который открыл это окно.

zlatko
14.05.2008, 17:38
Ок. Мысль понятна. Спасибо !