Лекция 2 CS193P Winter 2017 — MVC; Демонстрация iOS 10, Xcode 8 и Swift 3.

На Лекции 2 профессор подробно с картинками объясняет использование паттерна MVC для разработки iOS приложений.

Затем следует продолжение демонстрационного приложения Калькулятор, начатого на прошлой лекции. Происходит разделение кода Модели и кода, обслуживающего View Controller. Появляется новая структура struct CalculatorBrain, которая представляет лагерь Модель. Возможно вы привыкли использовать структуры struct в других языках и думаете о них, как о маленькой коллекции других переменных. В Swift структура struct — это “гражданин” первого класса, очень похожий на класс class. У класса class и структуры  struct много отличий, но самых главных два:

  1. Классы classes имеют наследование (inheritance), а структуры structs — нет.
  2. Классы classes ”живут” в “куче”, и у вас есть на них указатели.  Классы classes используют стиль передачи по ссылке reference types. Структуры structs НЕ ”живут” в “куче” и передаются повсюду путем их копирования (точнее с использованием механизма copy-on-write). Мы называем этот стиль передачи value types.

Профессор показывает, как проектировать Модель с использованием структуры struct CalculatorBrain, отталкиваясь от  public API Модели,  как добиться расширяемой функциональности в структурах struct, ведь мы не можем использовать создание subclass, как в классе class. Показано создание вложенных структур  struct и перечислений enum. На очень коротких фрагментах кода объясняется, когда стоит применять Optional, а когда — нет, исходя из семантического содержания Optional. Очень подробно рассказывается о перечислениях enum и о том, что Optionals также являются enum. Оба имеют ассоциированные значения, но в случае с enum они  могут быть любыми, в том числе и замыканиями (closure).

Показаны возможности замыканий (closures), использование которых вместе с именами параметров по умолчанию в виде $0$1$2 … сильно упрощает и делает код более понятным.

Сделав небольшие изменения в классе ViewController, обслуживающего Controller, профессор больше не вернется к его модификации, какие бы изменения не претерпевал код структуры CalculatorBrain в лагере Модели CalculatorBrain (зеленая стрелка на схемах MVC), демонстрируя строгие принципы MVC.

В конце Лекции 2 мы уже забываем и о Модели, и о Controller, а будем работать только с нашим лагерем View, демонстрируется применение StackViews для конструирования «растягивающего» пользовательского интерфейса (UI), который будет прекрасно работать в портретном и ландшафтном режимах на любых приборах.

Код демонстрационного примера для Лекции 2 находится на Github в папке Calculator II.

Лекция 2 и слайды на английском языке находятся на  iTunes название “2. MVC; iOS, Xcode 8 and Swift Demonstration.”

Русскоязычный неавторизованный конспект Лекции 2, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также в формате Google Doc доступны на платной основе

Лекция 2 CS193P Winter 2017 — MVC; Демонстрация iOS 10, Xcode 8 и Swift 3.: 14 комментариев

  1. Добрый день!

    Татьяна, подскажите пожалуйста, после оплаты где и как получить pdf с лекциями?

    Заранее благодарен!

    • Я вам вышлю ссылку на доступ к папкам Google Drive, в которых расположены конспекты лекций в виде Google Doc и PDF, но мне нужен ваш gmail, потому что только он обеспечивает безопасность.

        • Дмитрий, вам посланы все необходимые приглашения для вашего email.
          Спасибо за поддержку проекта.
          Будут вопросы — обращайтесь.

    • 1- ая часть (лекции 1-6) https://bestkora.com/IosDeveloper/dostup-k-paketu-ios-10/
      2 — ая часть(лекции 7-12) https://bestkora.com/IosDeveloper/dostup-k-paketu-ios-10-chast-2/
      3-ая часть https://bestkora.com/IosDeveloper/dostup-k-paketu-ios-10-chast-3/ (лекции 13-17,пока не полностью, Лекции 15, 16 и 17 лекции будут выложены в ближайшее время по мере готовности)
      Необходим ваш gmail для доступа к Google Doc.

      • Татьяна, по ссылкам в ответе нет ни стоимости ни способа оплаты(реквизитов получателя). Как бы уточнить ? Можете написать на мой ящик ib.antonchenko@gmail.com ?

        • В ссылках представлена форма оплаты через Яндекс-Деньги и там указана сумма.
          Если вы находитесь на Украине, то по-видимому вы не видите эти формы правильно.
          В этом случае можно платить через PayPal (ссылка ниже) или через Western Union.
          В последнем случае вы указываете страну — Россия, ФИ — Корнилова Татьяна и сообщаете мне по почте номер.
          Такой путь мы уже проходили в нескольких случаях.

          1-ая часть (лекции 1-6) — 500 руб
          2-ая часть (лекции 7-12) — 500 руб
          3-ая часть (лекции 13-17) (не закончена) — 500 руб
          Полный курс — 1500 руб.
          Но можно оплатить через PayPal
          https://www.paypal.me/TatianaKornilova/500
          Просто потом пришлите мне на этот адрес tatiana.kornilova@gmail.com сообщение о том, какая часть вам нужна, и email, по которому нужно открыть доступ.

  2. Добрый вечер!
    Лекция вторая, перед строкой —30-я минута лекции— вы пишете :
    «получаем результат вычислений и устанавливается значение 8»
    в лекции такого нет, и как 5 * 3 = 8? Сначала просто читал потом увидел ошибку и подумал, неужели профессор ошибся, ан нет 😉

    • Вы обнаружили эту ошибку в PDF версии Лекции 2. Эта ошибка давно исправлена в Google Document Лекции 2, но, к сожалению, PDF, который является вторичным документом по отношению к Google Document, не был перезагружен. Сейчас это исправлено. Спасибо вам. Если обнаружите другие ошибки — сообщите, пожалуйста.

  3. Добрый день, если сейчас оплачу материалы для версии iOS 10, то за версию iOS 11 надо будет еще раз платить или обновление будет доступно бесплатно?

Обсуждение закрыто.