Не запоминай, пойми | Обновление от 14 мая 2017 г.

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

Мотивация

Большинство разработчиков iOS использовали UITableVIew и UICollectionView. Слишком многие, включая меня, просто копируют видео и Stack Overflow, не зная, что они делают, например, «UITableViewDelegate».

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

Ризван попросил,

«Боб, вы писали статьи о делегатах / протоколах? Если нет, напишите, пожалуйста. Потому что большинство новичков должны это усвоить, и никто не объясняет это четко »- 22 ноября 2016 г.

Итак, я решил попробовать. ✍️

Кто-нибудь накорми меня

Представьте, что вам 2 года. Вы не умеете готовить еду. Тебе нужна помощь мамы.

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

protocol Cook {
 func makingFood() 
}

А теперь давайте создадим маму, которая соответствует протоколу Cook.

struct Mom: Cook { 
 func makingFood() { print("Pizza coming soon!") } 
}

Если вы не знакомы с протоколом, вы можете прочитать Введение в протокол, которое я написал здесь.

А теперь давайте создадим настоящую маму

// Make a mom
var mom = Mom()
mom.makingFood() // "Pizza coming soon!"

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

// Make a baby
struct Baby {
 var delegate: Cook? // delegate = someone with special skills
}

Теперь создайте настоящего ребенка и назначьте делегата мамой

// Create a baby 
var babe = Baby()
babe.delegate = mom

Тип свойства делегата - «Cook?». Тип «мама» может быть как «Готовить», так и «Мама», поскольку она соответствует «Готовить »протокол.

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

Протокол как типовой урок

Теперь ребенок может есть.

babe.delegate?.makingFood() // "Pizza coming soon!"

Ребенок не умеет готовить. Однако он добавил делегата в качестве необязательного свойства, который, возможно, может готовить для него. Затем он назначил делегата в качестве объекта мама, который может делать гораздо больше, чем сам ребенок.

Capisce? - Боб Ли

Итак, когда вы используете добавление делегатов в UITableView, UITextField, UICollectionView, инженеры Apple создали потрясающих «мамочек», так что нам, разработчикам, (младенцам) не нужно ничего кодировать, а просто кормить себя. Конечно, мы можем создать собственных мам для нашего проекта, как показано выше.

Простой? Да, это так. Слишком многим людям трудно объяснить эту концепцию. Прокомментируйте, пожалуйста, ниже, если я хорошо поработал. Кроме того, если вы нашли это полезным, ❤️ слева и поделитесь с сообществом.

Промежуточный быстрый курс

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

Боб Разработчик

Я инструктор по iOS из Сеула,. Не стесняйтесь знакомиться со мной в Инстаграм. Регулярно выкладываю обновления на Facebook. 🖨 в субботу.