Не запоминай, пойми | Обновление от 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. 🖨 в субботу.