Протоколы и делегаты для чайников

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

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

Итак, последовательность такова:

  1. Целевой метод создается в объекте контроллера.
  2. Вид выбирается и графически связывается с этим методом.
  3. В этом представлении происходит событие, которое запускает метод из контроллера.

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

  1. Использование делегатов / протоколов вместо цели / действия
  2. Составляющие кода и его место обитания
  3. Последовательность событий, которые происходят, когда процесс используется

Буду бесконечно признателен.

Судя по некоторым комментариям к другим объяснениям, я чувствую, что я не единственный, кто немного заблудился, поэтому, надеюсь, это будет широко использовано. Огромное спасибо!

Править:

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

Мой образец взят из Apple Docs , с Window в качестве объекта просмотра и WindowDelegate в качестве делегата, где щелчок по кнопке закрытия окна вызывает вопрос «закрыть?» сообщение делегату.

Составляющие Кодекса: Окно (Просмотр) WindowDelegate (View Controller?)

  1. Объявите протокол, который делегат может использовать в разделе интерфейса окна (View).
  2. Создайте экземпляр делегата в окне.
  3. Укажите, что WindowDelegate реализует оконный протокол, включая: в его интерфейс. (здесь немного шатает?)
  4. Напишите необходимую реализацию методов в разделе реализации WindowDelegate (View Controller).
  5. При определенном событии Window отправляет сообщение WindowDelegate с определенной информацией.
  6. WindowDelegate обработает это и вернет ответ.

Где-нибудь по правой линии?

8
задан Alan 6 January 2012 в 15:20
поделиться