|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Переменная это ссылка (всегда, кроме простых типов Number и String).
Слово "ссылка" означает указание на область памяти, в которой хранится Объект.
Когда Вы пишете ссылка.method(), Вы вызываете метод Объекта, на который указывает ссылка.
А есть операции с самой ссылкой, например ссылка = ...
Когда Вы пишете ссылка = new Объект(), оператор new создает новый Объект в новой области памяти, а ссылка с этого момента указывает на него. "Старый" объект так и остается в памяти, Вы меняете только значение ссылки (поэтому она называется переменной. Объект же не может быть "переменным")))) Поэтому
1) слушатели, подписанные на события первого объекта, не станут слушателями событий нового объекта.
2) первый объект так и останется на сцене, ведь никто его не удалял из дисплей-листа.
3) будет указывать на второй объект.
4) естественно, если первый объект больше не нужен, его надо уничтожить, то есть сделать доступным для Сборщика Мусора. Для этого нужно удалить все ссылки на этот объект (в том числе удалить его из списка отображения, если он дисплейный, так как любой контейнер имеет ссылки на своих детей, а так же удалить все подписки этого объекта на события других объектов — они тоже хранят на него ссылку). Если на объект (область памяти) не останется ни одной ссылки, им никто никогда не сможет воспользоваться, и Сборщик Мусора со временем очистит эту область памяти.
Последний раз редактировалось Wolsh; 22.04.2013 в 22:32.
|