Показать сообщение отдельно
Старый 31.01.2011, 18:16
Killer_13 вне форума Посмотреть профиль Отправить личное сообщение для Killer_13 Найти все сообщения от Killer_13
  № 7  
Ответить с цитированием
Killer_13
 
Аватар для Killer_13

Регистрация: Jan 2007
Сообщений: 302
Цитата:
Сообщение от shootkin Посмотреть сообщение
Хорошо, распишу подробнее.
1. this.someMethod() и super.someMethod() ссылаются на один и тот же объект. Разница в том, что первый вызывает переопределенный метод, а второй - метод, который был определен в родительском классе, но оба эти метода выполняются над данными одного и того же объекта. Нет никакой разницы как откуда и каким образом вы вызываете UI_Connect.destructor() - и this и super в нем будут указывать именно на этот экземпляр UI_Connect.
Просто красивее, практичнее и логичнее было бы закрывать одно окно в контроллере, а не из другого окна (если предположить, что UI_Connect и UI_NewGame - это какие-то окна). UI_NewGame по идее вообще не должен иметь референс на UI_Connect. Раз уж у вас есть контроллер, то используйте его хоть как-нибудь.

2. Давайте по порядку: вы создаете локальный экземпляр класса Timer, подписываете на его ивент какой-то свой метод, запускаете таймер, функция завершается. Референс на созданный таймер вы после этого теряете, но сам экземпляр таймера конечно никем не убивается. По прошествии заданного интервала времени (примерно), невидимый вам таймер вызовет обработчик, который вы ему прописали. В обработчике лучше явным образом отписаться от ивента этого таймера как написал gloomyBrain чтобы сборщик мусора почистил этот таймер.
В чем вообще вопрос был? Если вы хотели, чтобы таймер сам отписал всех своих листенеров и убился после завершения функции только от того что эта функция приватная - то нет, ничего такго не будет. ООП тут ни при чем.
Вот, например, вы в приватной функции локально объявляете переменную типа Sprite, создаете ее экземпляр, рисуете в нем какой-нибудь квадрат и добавляете его не stage. Вы будете ожидать, что после завершения функции квадрат сам собой со stage удалится только потому что вы его нарисовали локально в приватной функции, да?
1. - приблизительно понял, сейчас все переделаю, а то у меня 5 классов и уже путаница.
2. - БРАВО! Прям в точку, а еще вспомнилось крылатое выражение "убить себя па стену".
Вы все прекрасно обьяснили. Я просто чуток сьехал на с++, где локальная переменная уничтожается при выходе из функции.

Спасибо огромное!