Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   fl.transitions.TweenEvent.MOTION_FINISH по совершению, нужно удалять listener? (http://www.flasher.ru/forum/showthread.php?t=140915)

КорДум 25.06.2010 14:39

Так-так-так. Всегда по старинке чистил все последовательно: удалить из отображения, убить слушателей, занулить ссылку. А тут, оказывается, можно и не убивать слушателей, ибо можно поставить пятый параметр в логическую единицу. Ага. Итого мы имеем экономию в строчках.
Хм, Николай Мукк'офф, помнится, писал, мол, слабые ссылки хороши, но не всегда. Мол, слушатели могут удалиться в ненужный момент, потому что ГЦ так пожелал. Я не прав?

-De- 25.06.2010 15:24

Я не агитирую за неудаление руками слушателей, я за то, чтоб использовать слабые ссылки в слушателях как страховку на случай, если забудут/будет неудобно руками удалять. Плюс пока GC не съест слушателя - он может вызываться и жрать проц(ну в случае мышиных евентов не будет, понятно).
Если в слушателе используется анонимная функция, единственная ссылка на которую - в слушателе, то GC её в "ненужный момент" съест. Это есть (и это описано в доке). В остальном - всё ок (или есть баг, что очень врядли).

КорДум 25.06.2010 15:36

Ага. А то я испугался уже, что пропустил облегчение жизни кодера из виду. А тут простая подстраховка.

Сайлас 25.06.2010 15:44

Не всегда работает стабильно слабая ссылка, слушатели слетают раньше времени часто в случае локальных переменных (даже на сцене когда они)

-De- 25.06.2010 16:45

Пример бы, это тогда баг, а что-то не нарыл я про такое.
Не бывает локальных DisplayObject'ов, бывают локальные ссылки на них. И в случае добавления их на сцену добавляется нормальная ссылка. Получается какая-то "полуслабая" ссылка - обьект на сцене не мрёт, а слушатель - мрёт.

КорДум 25.06.2010 18:44

Ага, нашел:
[IMG]http://s40.***********/i090/1006/0d/1410bda9d883t.jpg[/IMG]
Это не в упрек, это просто информативная выдержка из книги. А двумя страницами ранее было сказано про опасность анонимных функций и слабые ссылки как помощники в их удалении.

AlexDesinger 28.06.2010 11:10

и охота вам доверять и без того не совсем "умному" GC с слабыми ссылками, он и так чистит как ему нравиться, а вы ему еще такие важные вещи хотите доверить.
Нет, с листенерами нада все четко - в нужном месте поставили, пропала необходимость, сообщили товарищу из уборочного бюро - "приберите тут как только у вас появиться свободная минутка" и все...иначе кучи багов не избежать, все это ИМХО на личном опыте.

Psycho Tiger 28.06.2010 11:25

Цитата:

Сообщение от КорДум (Сообщение 914565)
После уничтожения объекта (не важно какого) все слушатели, таймеры, присоединенные к нему, остаются и работают. Так что только чистить самому.

Не совсем. Он остается, но до вызова GC.
Все удаления "руками" слушателей нужны чтобы "сэмулировать" удаление, само удаление произойдет по воле GC.

КорДум 28.06.2010 14:50

Цитата:

Сообщение от Psycho Tiger (Сообщение 918520)
Не совсем. Он остается, но до вызова GC.
Все удаления "руками" слушателей нужны чтобы "сэмулировать" удаление, само удаление произойдет по воле GC.

Это понятно, я утрировал. Но на GC мы можем повлиять только классом silin'а, или его вызовом вкупе с дебаг плеером, или намеренно нагрузив память хламом :)
Цитата:

Сообщение от AlexDesinger (Сообщение 918519)
и охота вам доверять и без того не совсем "умного" CG с слабыми ссылками, он и так чистит как ему нравиться, а вы ему еще такие важные вещи хотите доверить.
Нет, с листенерами нада все четко - в нужном месте поставили, пропала необходимость, сообщили товарищу из уборочного бюро - "приберите тут как только у вас появиться свободная минутка" и все...иначе кучи багов не избежать, все это ИМХО на личном опыте.

Вы просто не умеете его готовить (с)
Но я согласен.

Добавлено через 1 час 34 минуты
Кстати, а вот нашел в пришпиленной теме в этом разделе: http://flasher.ru/forum/showpost.php...3&postcount=40


Часовой пояс GMT +4, время: 08:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.