![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
И то и другое костыль, но self-ссылки — костыль в несколько раз больше, и не один.
|
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 52
|
Цитата:
На self ссылка после выполнения конструктора убивается, остается ссылка внутри безымянной функции, на которую ссылка отсутствует, по идее должна убиться. Как и что убивается при использования Delegate мне неизвестно, если известно вам, поясните пожалуйста. А вообще рассуждения "с большей вероятностью" чистая демагогия. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
|
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
А что вообще делегат делает? Возвращает функцию оболочку с нужной функцией вызова apply:
По-любому генерится лишняя функция. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ага, только в этом коде область видимости не изменится.
Так она генерится в обоих костылях. |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Да, это просто схема работы делегата. (код нерабочий, если кто не понял. Чтобы сделать его рабочим надо добавить ссылку на функцию onLoadXML. Например, так: xmlDoc.onLoadXML=onLoadXML)
Но суть в создании лишней функции-оболочки. Последний раз редактировалось chingachgoog; 28.11.2008 в 17:31. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Опять же, this внутри onLoadXML будет ссылаться на xmlDoc, а не на экземпляр Room. Снова область видимости будет неправильной.
|
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Сразу видно, что обработчик onLoad принадлежит объекту xmlDoc и соответственно this внутри обработчика принадлежит xmlDoc. Код без делегатов более понятный и логичный. Не зря же делегаты - пользовательский класс, а не встроенный. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|