Пол Хэгерти начинает Лекцию 6 с небольшой демонстрации великолепных возможностей Xcode по работы с пользовательскими UIViews: @IBDesignable и @IBInspectable. Затем добавляется Модель в MVC, разработка которого началась на прошлой лекции.
Extensions
Далее рассматривается такая концепция Swift как extensions (расширения). Пол Хэгерти подчеркивает, что рассказывает об extensions не потому, что это очень важная возможность Swift, а потому что это немного опасная возможность Swift. Реализация extensions в Swift очень простая. Совсем чуть-чуть синтаксиса для добавления методов и свойств к существующим classes, structures и enums. Вам не нужно даже иметь код этой вещи, к которой вы хотите добавлять расширения. Вы можете добавлять столько методов и свойств, сколько хотите. Именно простота синтаксиса может привести к злоупотреблениям применения этой концепции.
Протоколы и делегирование
Пол Хэгерти рассказывает о том, что Swift имеет очень любопытный синтаксис для протоколов. Затем следует подробная теория протоколов и делегирования, излагаемая на слайдах. Четко очерчивается процедура разработки делегирования как со стороны того, кто (обычно View) делегирует свою ответственность другим, так и со стороны того, кто берет на себя роль делегата (по обстоятельствам может быть и View, и Controller). Простота Модели в очень подробном демонстрационном примере приводит к такому понятному изложению сложной для понимания концепции делегирования, что удобно держать этот замечательный пример как прототип для проектирования делегирования в любых других сложных обстоятельствах.
Жесты
Рассказывается как нужно работать с самыми разными жестами: pinch (стягивание), pan (движение по экрану), rotation (вращение), swipe (смахивание), tap (стук) и в разных условиях: на storyboard и в коде. Большое внимание уделяется как распознаванию различных жестов, так и их обработки как в случае управления экранно-зависимыми элементами UI, так и Моделью.
Демонстрационный пример показывает работу с двумя совершенно различными жестами : pinch и pan. Один — с двумя пальцами, другой — с одним. Один жест мы добавили на storyboard, а другой — в коде. Один обрабатывает наш Controller, а другой — наш View. Система IOS великолепно определяет разницу между жестами, когда один сменяет другой.
В конце лекции Пол Хэгерти переходит к большой теме «Множество MVC«, которая будет продолжена на Лекции 7.
Лекция и слайды на английском языке iTunes название “6. Protocols and Delegation, Gestures”. Код Демо «Happiness» для Swift 1.2 доступен на сайте Stanford. Код демонстрационного примера «Happiness» для Swift 2.0 доступен на Github.
Русский неавторизованный конспект лекции 6, хронометрированный через каждые 5 минут, представлен в PDF — файлах.
Лекция 6 CS193P Winter 2015 iOS 8 1.pdf
Лекция 6 CS193P Winter 2015 iOS 8 2.pdf
Лекция 6 CS193P Winter 2015 iOS 8 3.pdf