В Лекции 2 профессор подробно с картинками объясняет использование паттерна MVC для разработки iOS приложений.
Затем следует продолжение разработки демонстрационной игры Концентрация, начатой на прошлой лекции. Происходит разделение кода Модели и кода, обслуживающего View Controller. Появляется новый класс class Concentration и новая структура struct Card, которые представляют лагерь Модели. Возможно, вы привыкли использовать структуры struct в других языках и думаете о них, как о маленькой коллекции других переменных. В Swift структура struct — это “гражданин” первого класса, очень похожий на класс class. У класса class и структуры struct много отличий, но самых главных два:
- Классы class имеют наследование (inheritance), а структуры struct — нет.
- Классы class ”живут” в “куче”, и у вас есть на них указатели. Классы class используют стиль передачи по ссылке reference types. Структуры struct НЕ ”живут” в “куче” и передаются повсюду путем их копирования (точнее с использованием механизма copy-on-write). Мы называем этот стиль передачи value types.
Профессор рассказывает, как проектировать Модель, отталкиваясь от ее public API. На очень коротких фрагментах кода показано, как исходя из семантического содержания Optional, можно легко и просто построить всю логику игры Концентрация, как использовать преимущества механизма copy-on-write (COW), действующего в структурах struct.
Как синхронизировать Модель и View Controller.