Форум программистов, компьютерный форум CyberForum.ru

Делегирование - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Как сделать offline кэш для браузера? http://www.cyberforum.ru/objective-c/thread1384101.html
Всем привет. Может повторюсь, но я только начал учить objective-c и сейчас на данный момент я делаю своеобразный os x клиент для web mmorpg. В планах сделать много чего хочу, но далеко не все понимаю как реализовать. На данный момент уже сделал браузер который при запуске открывает игру, привинтил к нему PSMTabBarControl для того что бы информация о персонажах открывалась в новых вкладках. И...
Objective-C Категории Не могу разобраться в чем польза от категорий. Если я правильно понял, то мы прописываем категорию в классе как-нибудь вот так: //.m @interface ViewController(myCategory) - (void) categoryMethod; http://www.cyberforum.ru/objective-c/thread1382382.html
Objective-C и Яндекс.Карты Objective-C
Доброго времени суток! Хочу попробовать написать приложение для iPhone, нужно чтобы на карте показывало местоположение пользователей и их перемещение в реальном времени (на машине) Опыта программирование под iOS нет, но на С#/С++ писал программы с Qt. Подскажите, пожалуйста, какие-нибудь сайты, книги, где можно найти какую-нибудь информацию про написание подобного приложения. Заранее...
Использование параметров из функции Objective-C
Подскажите пожалуйста, как это сделать - Поиск минимального элемента матрицы оформить в виде подпрограммы – функции. //массив c CGFloat c = { {0.3, 2.1, 6.2}, {2.8, 1.15, 2.0}, {1.2, 5.0, 7.7} }; CGFloat minc; minc = c;
Objective-C Сервис соответствия часовых поясов и городов http://www.cyberforum.ru/objective-c/thread1378373.html
Доброго времени суток! Ребят кто нибудь знает интернет сервисы или базы данных где можно найти соответствие часового пояса и города! Просто реализую органайзер где при вводе города нужно отобразить какое время сейчас там! может кто знает где взять и как это связать! Заранее спасибо!
Objective-C Вызов блока с переменными параметрами Странное дело. Есть функция/метод у объекта: -(void) BlockCall:(void (^)(float a, float b, NSObject *object, NSObject *secObject, NSObject *thirdObject)) argBlock withObject: (NSObject *)object andSObj:(NSObject *)sobject andTObj:(NSObject *)tobject { object = init]; sobject = init]; tobject = init]; подробнее

Показать сообщение отдельно
Vorona
Peace 2 all shining faces
 Аватар для Vorona
662 / 524 / 44
Регистрация: 05.03.2010
Сообщений: 1,270
01.03.2015, 02:22     Делегирование
чаще всего это делает сам делегат, т.е. представляет себя делегатом другого класса и в большинстве случаев вы будете делать именно так
конечно, могут встречаться случаи с каким-то адапторами, которых вы хотите сделать делегатами и пусть они разгребают рутину того или иного делегатора, а вам отдают только какие-то наиболее важные ивенты, но тогда скорее всего вы станете делегатом адаптора и т.д

короче чтобы особо не заморачиваться в частных случаях, обычно сам класс знает, что он хочет слушать чьи-то ивенты и сам на них подписывается, иначе в чем тогда будет его суть, если неизвестно кто и когда подпишет его на какого-то делегатора

Насчет обязательности присутствия поля ссылающегося на делегатор, то не всегда, именно по-этому есть практика, чтобы делегатор передавал первым параметром себя в методы, которые он кому-то делегирует

Яркий пример с UITableView, т.е вы можете в InterfaceBuilder добавить табличку и указать, что ее делегатом будет File's Owner, т.е. ваш вью-контроллер.
При этом вам совсем не обязательно иметь ссылку на табличку в этом вью-котроллере, просто реализуете методы UITableViewDelegate и все, при этом первым параметром в них вам приходит как раз та самая табличка
Кстати с UITableViewDatasource такая же история.

Вобщем по своей семантике делегат - ни что иное, как обсервер, только с одним слушателем, а по своей архитектуре - это тот же самый классический адаптер или стратегия. Так что возможно, если вы начнете как-то необычно использовать делегат, то по своему назначению он просто переименуется в другой паттерн, не более.

P.S.

И одна из прекраснейших особенностей этого шаблона, это то, что он диктует создание отдельного протокола, чтобы его было легко реюзать, и это то, что программисты часто заучивают и не учатся применять на других своих случаях. Т.е. заучили, что для делегата нужен отдельный протокол, чтобы описать отдельное поведение и потом его переиспользовать,а для остальных случаев все так же пишут тонны кода и god-классы, но ладно, это уже отдельная песня.
 
Текущее время: 23:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru