|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2011
Сообщений: 31
|
Создание объекта без ключевого слова var
Увидел такой код в статье про MVC:
Затем, где-то рядом было так: Вопрос не про MVC, нет. Получается, можно создавать экземпляры объектов напрямую через new без ключевого слова var ? Какие подводные камни при этом существуют, и каким из двух способов и когда стоит пользоваться? |
|
|||||
В первом случае у вас не будет ссылки на объект. Соответственно вы ничего не сможете с ним сделать (если он сам себя не добавить куда-нибудь), и при первой возможности GC его удалит.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Но хуже то, что первый будет доступен для сборщика с момента создания.
__________________
RTFM |
|
|||||
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Про GC: очень типичная ошибка.
Hint: что будет, если объект в конструкторе подпишется на события? Или просто использует переданный ему в конструкторе параметр и заассайнит этому объекту ссылку на себя?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
Не забывайте про
Вот так GC ничего не заберет, но ссылку на экземпляр класса MyMovieClip можно получить только через перебор в дисплей листе по индексам. Конструктор - это, если грубо говоря, функция, которая возвращает экземпляр класса. Хотя конструктор - это не функция и не метод, это конструктор, если занудничать.
__________________
тут я |
|
|||||
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
Когда стоит пользоваться? Когда результат new передается параметром в другой метод. Делать как в приведенном Вами примере -- не стоит.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
Регистрация: Jun 2011
Сообщений: 31
|
Всем спасибо
|
|
|||||
Crazy
Наличие подписки на событие не является критерием для исключения из списка сборщика (для этого пишут деструкторы, хотя в AS3 их нет в явном виде). Я думаю, что это также распространенная ошибка, не отписывать удаляемый объект и забывать отключать в нем таймеры и останавливать каретку (и тоже для детей). (тоесть, даже после присвоения null все процессы в экземпляре буду протекать как и раньше)
__________________
RTFM Последний раз редактировалось S-ed; 19.06.2011 в 17:22. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Является, если на источник события есть внешние ссылки.
|
Часовой пояс GMT +4, время: 11:37. |
|
« Предыдущая тема | Следующая тема » |
Теги |
конструктор |
|
|