Необходимость делегирования в разработке iPhone или цель C - PullRequest
0 голосов
/ 06 марта 2012

Какая необходимость в делегировании при разработке iphone / ipad или цели C?

Я прочитал так много статей об этом. Все рассказывали, как реализовать концепцию, но никто не говорил, почему мы должны это реализовывать, и в этом случае мы должны ее реализовать.

Ответы [ 5 ]

1 голос
/ 06 марта 2012

Предположим, вы хотите реализовать Функциональность входа в систему в вашем приложении ... теперь вы не будете отображать Экран входа в систему каждый раз, когда запускаете свое приложение ... только при первом его запуске, а у вас нет логин и пароль ...

Так что в этом случае ..

  • Ваше приложение запускается:
  • Просмотр 1 загрузки (вид по умолчанию)
  • Вы проверяете, нет ли здесь логина ..
  • Вы загружаете новый вид .. (Вход в систему).
  • Пользователь вводит свои данные ... вы получаете логин и пароль ...
  • теперь вы хотите вернуться к виду по умолчанию и загрузить основное приложение с имена, введенные пользователем при просмотре входа в систему ....

Теперь вы будете использовать делегат, чтобы передать эту информацию (данные для входа) обратно в вид по умолчанию, чтобы он знал ... свои данные. теперь есть много разных способов сделать это ... например, уведомления и одноэлементные классы ... но когда вы хотите отправить более 3-4 наборов данных ... лучше использовать делегатов

0 голосов
/ 06 марта 2012

Подумайте обо всех компонентах, которые вам предоставляют iOS и Cocoa.TableViews, TextFields, PopOvers ... и т. Д.

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

Эти компоненты используют делегаты.Делегат - это независимый от реализации способ описания некоторого поведения, которому может соответствовать ваш компонент.

Когда UITableView необходимо выяснить, какова высота строк, UITableView нужно знать только о UITableViewDelegate.Ему не нужно знать о MyTableViewController, JohnsTableViewController, BobsTableViewController ... и т.д.Это значительно упрощает обслуживание и изменение кода, а также возможность повторного использования кода.

0 голосов
/ 06 марта 2012

Существует два ключевых преимущества делегирования: настройка объектов без создания подклассов и улучшение инкапсуляции.

Настройка без создания подклассов - это преимущество, которое вы получаете от многих API-интерфейсов Cocoa и Cocoa-Touch, используя шаблон делегата. Если они этого не сделали, вам, возможно, придется создавать подкласс UITableView каждый раз, когда вы хотите изменить его поведение, используя разные типы ячеек или другой источник данных. Вместо этого вы просто устанавливаете делегат табличного представления и источник данных, чтобы настроить его поведение.

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

0 голосов
/ 06 марта 2012

Используйте делегата, если вы хотите общаться только с одним объектом.Например, у tableView есть делегат - только один объект должен отвечать за него.

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

это был ответ на мой вопрос здесь

0 голосов
/ 06 марта 2012

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

ИСТОЧНИК

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