Какао / Iphone Dev - цель / механизм действия - PullRequest
1 голос
/ 21 июня 2010

Я начал изучать разработку для Iphone. Когда я читаю о структуре развития какао, возникло несколько основных понятий, и с этим возникла путаница. Я хочу убедиться, что я все правильно понимаю, и получить небольшое разъяснение:

Делегат - в основном шаблон проектирования стратегии. Я установил свой делегат класса и источник данных (который также является делегатоподобным объектом), а затем вызову методы для этих объектов делегатов.

Уведомление - в основном шаблон проектирования наблюдателя, в котором делегат автоматически регистрируется для всех уведомлений делегирующего объекта.

Цель / действие - это то, где я в основном растерялся. Существуют методы «SetAction» и «SetTarget» для объектов пользовательского интерфейса. Как я понимаю, если я соединяю метод с использованием IB (протягивая линию между объектом пользовательского интерфейса к владельцу файла), метод является действием, а владелец файла является целью. Означает ли это, что все методы (события) интерфейса должны быть направлены на один и тот же targer? (Поскольку у меня есть только метод SetTarget, который не принимает селектор или что-либо подобное в качестве другого аргумента). Тот же вопрос остается в отношении действий. Как можно растянуть линии между многими методами для одного владельца файла, если за один раз выполняется только одно действие (как подразумевает функция SetAction). Я хочу понять, как работает этот механизм.

Спасибо

1 Ответ

3 голосов
/ 21 июня 2010

Делегат - в основном шаблон разработки стратегии.

Я не согласен. Шаблон Стратегии использует делегирование, но включает больше, чем то, что Какао понимает как делегирование. Если у вас есть книга «Банды четырех»: в ней обсуждается вопрос о делегировании (стр. 20–21). Но я думаю, что вы поняли это в принципе правильно: делегирующий объект вызывает методы для своего делегата, либо чтобы сообщить ему о чем-то (изменение состояния, событие), либо запросить у делегата данные, либо если / как продолжить. Важно то, что делегат и делегирующий объект слабо связаны: при реализации делегирующего объекта вам не нужно заботиться о классе делегата.

Цель / действие - это то, где я в основном растерялся.

Объекты, у которых есть метод setTarget: и setAction:, обычно имеют только одно действие / событие (например, UIBarButtonItem, которое отвечает только на одно событие: одно касание). В противном случае класс должен поддерживать установку разных целей / действий для разных событий. См. UIControl и его подклассы в качестве примера. Там вы назначаете пары «цель / действие» с помощью -addTarget:action:forControlEvents:, и вы можете назначить несколько целей для разных событий, а также назначить несколько целей для одного и того же события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...