AS3 - Что происходит при удалении объекта, выполняющего код? - PullRequest
0 голосов
/ 07 декабря 2011

Что происходит, когда объекту, у которого в данный момент выполняется функция, удаляются все ссылки?

Я хочу, чтобы объект типа диалогового окна содержался в массиве основным классом для моей программы, и когдадиалог должен быть закрыт, я хочу, чтобы он был удален из массива во время этой функции закрытия экрана.Мой вопрос заключается в том, что если предположить, что объект диалогового окна во всех других отношениях подходит для сборки мусора, что происходит с кодом, который он должен выполнять?

Редактировать для пояснения: Массив - это слой визуальных элементов в моемпрограмма, одним из которых является диалоговое окно.Идея состоит в том, что кнопка «ОК» (или любая другая), которая закрывает окно, также удалит его из массива объектов, отображаемых одновременно.

Ответы [ 2 ]

4 голосов
/ 07 декабря 2011

Ваш объект не будет иметь права на сборку мусора, если на него ссылается что-то (в вашем случае для вызова метода внутри него).

Если вы хотите, чтобы ваш Диалоговый ящик имел право на сборку мусора изнутри, вам нужно добавить метод, который имеет дело с самостоятельным удалением из массивов, в которых он может находиться, и т. Д.

Ваш может выглядеть так.

public function destroy():void
{
    var ix:int = someArray.indexOf(this);
    someArray.splice(ix, 1);

    if(parent)
        parent.removeChild(this);

    // ...remove event listeners, etc
}
1 голос
/ 07 декабря 2011

Если все ссылки на объект были удалены во время выполнения функции этого объекта, остальные функции продолжат выполняться.Когда это будет сделано, объект будет удален во время следующего цикла сборки мусора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...