Обнуление объектов, переданных в качестве параметров, сборка мусора? - PullRequest
0 голосов
/ 23 февраля 2011

Если я создаю новый объект:

var objA:Object = new Object;

, а затем передаю его в экземпляр класса:

var objB:Class = new B(objA);

, и это моя функция уничтожения внутри класса B:

public function destroy():void
{
  __objA = null // __objA being just objA
}

Это уничтожает objA или это просто уничтожает ссылку на объект внутри экземпляра класса B?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

objA и __objA являются просто ссылками на объект, созданный «новым объектом». Этот объект не будет уничтожен, пока существует хотя бы одна ссылка на него.

Например, если objA является локальной переменной для метода, то, как только метод завершит выполнение ссылки на objA, больше не будет. За исключением, конечно, если у метода есть какие-либо продолжения (анонимные прослушиватели событий). Если это так, objA будет оставаться там до тех пор, пока слушатель не будет удален.

0 голосов
/ 23 февраля 2011

Я не верю, что объект будет уничтожен. Сама ссылка (__objA) будет уничтожена, но objA будет продолжать жить вечно, поскольку переменная __objA просто указывает на objA.

...