Лекция 4 в основном теоретическая с небольшими демонстрационными примерами, рассеянными по всей Лекции и показывающими те или иные возможности Swift в действии. Это заключительная (дальше будет изучение iOS) и наиболее трудная Лекция, посвященная Swift. Но где еще вы можете увидеть такое концентрированное, логичное и понятное объяснение таких продвинутых возможностей Swift, как «множественное наследование» функциональности через протоколы protocols?
Задание 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.
Обновление демонстрационных примеров и решений Заданий курса CS193P Winter 2017 до Swift 4 и iOS 11
Вышли официальные версий Swift 4, iOS 11 и Xcode 9. Поэтому я решила на своем сайте обновить демонстрационные примеры, сопровождающие замечательный стэнфордский курс CS193P Spring 2017 «Developing iOS 10 Apps with Swift», для Swift 4.0 и iOS 11.
Демонстрационные примеры для Swift 4, iOS 11 и Xcode 9 находятся на Github.
Решения Заданий для курса CS193P Spring 2017 «Developing iOS 10 Apps with Swift» для Swift 4, iOS 11 и Xcode 9 находятся на Github.
Надо сказать, что большинство демонстрационных примеров не претерпели никаких изменений в коде для Swift 4, за исключением добавления атрибута @objc для методов, сопровождающих жесты.
Однако очень значительные изменения пришлось внести для iOS 11 в демонстрационные примеры Smashtag L9 и Smashtag L11, так как в iOS 11 больше не поддерживаются accounts для социальных сетей Twitter, Facebook, Flickr, Vimeo. Более того, iOS 11 больше не поддерживает использование Twitter с помощью встроенного фреймворка Social. Вместо этого вы можете использовать Twitter Kit 3 и Twitter API. Поэтому в наборе демонстрационных примеров для Swift 4 для Лекций 9 и 11 присутствуют две папки: iOS10 и iOS11. В папке iOS10 находится привычная нам версия, которую демонстрировал профессор на лекциях с использование фреймворка Twitter, созданном на основе Social. А в папке iOS11 находится версия с использованием Twitter Kit 3 и Twitter API ( о ней подробнее в самом конце этого поста).
Что нового в Swift 4.
Swift 4.0 в Xcode 9 уже доступен, и он принес нам несколько приятных изменений. Конечно, мы не получили ни такой кардинальной переработки синтаксиса, как в прошлом году для Swift 3, ни таких захватывающих возможностей, как в Swift 2, но есть несколько замечательных добавлений, которые могут существенно улучшить ваш код. Давайте посмотрим на них!
Сейчас очень много материала на тему «Что нового в Swift 4». Я взяла за основу знаменитую статью Ole Begemamm «Playground: What’s new in Swift 4.», дополнила ее очень интересными примерами из других статей, предоставив в ваше распоряжение Playground с примерами на русском языке.
Руководство по проектированию Swift API (Swift API design guidelines)
Если вы разрабатываете приложения на Swift, в том числе и приложения, связанные с выполнением Заданий стэнфордского курса, вам необходимо знать принципы проектирования API в Swift, которые отличаются от принципов проектирования API в Objective-C и других языках. И это зафиксировано в руководстве по проектированию Swift API «API Design Guidelines«, выпущенному Apple. Кулиничев Евгений любезно предоставил перевод этого руководства на русский язык для размещения на этом сайте. Вы можете посмотреть его в Google Doc или скачать в PDF формате для изучения в offline:
Но прежде, чем вы приступите к его изучению, необходимо дать вам некоторые фундаментальные идеи, которые были заложены в этот документ:
- Обеспечение понятности кода в точке его использования
- Понятность кода более важна, чем его краткость
- Создание самодокументируемого API
Код пишется один раз, а читается многократно. Очень важно, чтобы Swift код был читаемым и понятным в точке использования. Хотя кажется, что это очень знакомое требование, оно отличается от правил проектирования API в Objective-C. В Swift мы не хотим унаследовать многословный стиль Objective-C, в котором вся необходимая информация передается через хорошо сконструированный API, и редко бывает хорошо читабельной в точке использования. В Swift недостаточно, чтобы API был хорошо читабельным в точке определения; он должен быть читабельным и иметь смысл в различных точках применения. И вы увидите в руководстве, как это достигается. Читать далее