Лекция 4 в основном теоретическая с небольшими демонстрационными примерами, рассеянными по всей Лекции и показывающими те или иные возможности Swift в действии. Это заключительная (дальше будет изучение iOS) и наиболее трудная Лекция, посвященная Swift. Но где еще вы можете увидеть такое концентрированное, логичное и понятное объяснение таких продвинутых возможностей Swift, как «множественное наследование» функциональности через протоколы protocols?
Архив рубрики: Stanford CS 193P iOS 11
Задание 1 Stanford CS 193P Fall 2017. Игра Концентрация. Решение.
Содержание
Цель задания состоит в воспроизведении демонстрационного примера, представленного на Лекции, и в небольшом его усовершенствовании. Очень важно, чтобы вы понимали, что вы делаете на каждом шаге воспроизведения демонстрационного примера, тем самым подготовив себя к расширению возможностей игры Концентрация.
Текст Домашнего задания на английском языке доступен на iTunes в пункте “Programming: Project 1: Concentration″. На русском языке вы можете прочитать текст Задания 1 здесь:, а скачать здесь: Начинаем выполнять Задание 1 с кода, полученного в конце Лекции 2. Профессор настоятельно рекомендует не копировать код первых 2-х Лекций, а непосредственно печатать его в Xcode, так как это даст хороший опыт освоения среды разработки Xcode 9.
Лекция 3 CS193P Fall 2017 — Swift.
В Лекции 3 подробно рассказывается о возможностях Swift и не только.
Вот повестка дня Лекции 3 :
- Autolayout тизер
- Краткий обзор того, что мы изучили в Concentration
- CountableRange чисел с плавающей точкой
- Кортежи Tuples
- Вычисляемые свойства (Computed Properties)
- Управление доступом (access control)
- assertions ( утверждения)
- extensions ( расширения)
- enum (перечисление)
- Optionals— это enums
- Обзор структур данных (включая управление памятью)
Лекция 2 CS193P Fall 2017 — MVC.
В Лекции 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.
Лекция 1 CS193P Fall 2017 — Введение в iOS 11, Xcode 9 и Swift 4. Часть 2.
На сайте представлен полный неавторизованный хронометрированный конспект Лекции 1 на русском языке курса “Разработка iOS 11 приложений с помощью Swift 4”.
Первая часть — 0 — 50 минута находится здесь,
Вторая часть — 50 — 82 минута — находится в этом посте.
Код демонстрационного примера для Лекции 1 находится на Github для iOS 11 и на Github для iOS 12 в папке Concentration L1.
——— ПРОДОЛЖЕНИЕ КОНСПЕКТА ——————-
——- 50 -ая минута лекции ———
Но метод touchCard вызывается ОБЕИМИ картами:
И в этом проблема.
Почему так произошло? Это произошло из-за того, что я копировал (⌘C Copy) и вставлял (⌘V Paste) карту с “привидением” ? для создания второй карты. При проведении операции копирования и вставки происходит копирование всех методов. Это очень распространенная ошибка, которую очень легко сделать.
Конечно, я намеренно создал новую карту копированием, чтобы показать вам, как избавиться от вышеупомянутой ошибки.
Для этого вам нужно кликнуть правой клавишей “мышки” (или CTRL -кликнуть) на элементе UI, и он вам покажет все свои связи (connections).
Давайте CTRL -кликнем на карте с “тыквой” ?: Читать далее
Лекция 1 CS193P Fall 2017 — Введение в iOS 11, Xcode 9 и Swift 4. Часть 1.
На сайте представлен полный неавторизованный хронометрированный конспект Лекции 1 на русском языке курса “Разработка iOS 11 приложений с помощью Swift 4”.
Первая часть — 0 — 50 минута находится в этом посте,
Вторая часть — 50 — 82 минута — находится здесь.
Код демонстрационного примера для Лекции 1 находится на Github для iOS 11 и на Github для iOS 12 в папке Concentration L1.
На Лекции 1 профессор Пол Хэгерти представляет этот курс, предварительные требования для его успешного прохождения и дает беглый обзор iOS 11. Затем полностью погружается в очень большой и продолжительный демонстрационный пример.
Темы демонстрационного примера:
- Создание проекта Project в Xcode 9
- Построение пользовательского интерфейса (UI)
- iOS симуляторы
- print (вывод на консоль, используя \( ) нотацию)
- Определение класса в Swift, включая определение переменных экземпляра класса и методов
- Связывание свойств (переменных экземпляра класса) в Swift коде с элементами пользовательского интерфейса UI (Outlets)
- Привязка элементов UI к методам в коде Swift (Actions)
- Доступ к iOS документации из кода
- Автоматическое выполнение кода при каждом изменении значения свойства
- Optionals (?, неявное развертывание путем декларирования со знаком !, явное развертывание с помощью ! и if let)
- Array
За этими сухими пунктами скрывается блестящее изложение основных синтаксических конструкций Swift, начиная от самых элементарных и заканчивая такими сложными и непривычными как Optional и неявно развернутое Optional (implicitly unwrapped Optional). Очень небольшое количество языков программирования имеет концепцию Optional. Это действительно крутая концепция, которую обязательно нужно понять, ибо в Swift она встречается повсюду, ей пронизаны всех iOS APIs. Но требуется некоторое время, чтобы к ней привыкнуть и эффективно ее использовать.
Попутно профессор подробно рассказывает про среду разработки Xcode 9, симуляторы, и показывает их новые возможности, а также предостерегает от распространенных ошибок, связанных с «подводными камнями» Xcode 9.
Поэтому для начинающих изучать Swift (а не программирование как таковое) Лекции 1 и 2 являются must have. Но даже если вы опытный разработчик iOS, вы все равно обнаружите в Лекции 1 что-то новое для себя.
В Лекции 2 продолжится демонстрационный пример, начатый на этой Лекции.
Появился новый стэнфордский курс «Developing iOS 11 Apps with Swift» для Swift 4
Стэнфордский курс «Developing iOS 11 Apps with Swift» теперь доступен на iTunes. Это обновление предыдущего курса по «Developing iOS 10 Apps with Swift». Пока выложены 6 лекций, 2 домашних Задания на программирование и 2 Задания на чтение.
Мы будем предоставлять на этом сайте все необходимые материалы для стэнфордского курса «Developing iOS 11 Apps with Swift»:
Видео можно смотреть в Youtube.
Демонстрационные примеры находятся на Github.
Тексты заданий, а также слайды для Лекций выкладываются на
Если вас интересуют русскоязычные не авторизованные переводы Лекций и Заданий, а также коды демонстрационных примеров и Заданий, то следите за страницей iOS 11 + Swift 4.