О стэнфордских лекциях

Стэнфордский университет, США — один из лучших в мире  в области информатики (Computer Science). Он щедро делится своими курсами на iTunes U. Одним из  самых популярных и успешных курсов является курс CS193P  по разработке приложений на iOS, который читает профессор Paul Hegarty. Это курс читается ежегодно, начиная с 2010 года. На данный момент актуальными являются пять последних курса:

«Developing iOS 11 Apps with Swift»,    CS193P осень 2017 года — Разработка iOS 11 приложений с использованием Swift

«Developing iOS 10 Apps with Swift»,    CS193P зима 2017 года — Разработка iOS 10 приложений с использованием Swift

«Developing iOS 9 Apps with Swift»,    CS193P весна 2016 года — Разработка iOS 9 приложений с использованием Swift

 «Developing iOS 8 Apps with Swift»,    CS193P зима 2015 года — Разработка iOS 8 приложений с использованием Swift

Developing iOS  7 Apps for iPhone and iPad, CS193P осень 2013 — зима 2014 года —  Разработка iOS 7 приложений для iPhone и iPad

Для того, чтобы освоить эти курсы, вам нужно иметь только Mac — Macbook Pro, MacBook Air, iMac.

Перечень русскоязычных конспектов лекций и решений Заданий для курсов  

«Developing  iOS 11 Apps with Swift» находится на странице «iOS 11 + Swift 4», «Developing iOS 10 Apps with Swift» находится на странице «iOS 10 + Swift 3»,  «Developing iOS 9 Apps with Swift» находится на странице «iOS 9 + Swift 2.2 + Swift 3»,  «Developing iOS 8 Apps with Swift»—  на странице «iOS 8 + Swift»,   Developing iOS  7 Apps for iPhone and iPad — на странице «iOS 7 +  iOS 9 + Objective-C»

Если вы освоите этот курс, то можете считать себя профессионалом, способным создать любое самое современное приложение для iPhone и iPad. Это сделать очень не просто, но это того стоит.

Задача  данного проекта в том, чтобы вывести разработчиков на достаточно высокий уровень iOS программирования, когда вы свободно сможете общаться с экспертами и понимать все, что говорится на WWDC, а также следить за созданием Swift 4 и Swift 5 на сайте Swift.org , а не “болтаться” вечно в обучающих материалах. После качественного самостоятельного программирования  Заданий курса CS193P без копипаста никакие обучающие курсы уже не нужны.

В этом курсе высвечивает множество нюансов операционной системы iOS, которые не так -то легко  найти в документации, профессор снабжает вас приемами программирования, которые вы не найдете ни в одной книге ( может быть, на WWDC 2012 2013 2014 2015 2016 2017). Он многократно сократит ваш путь изучения  языков программирования Swift и Objective-C и системы iOS.

Хотя профессор Paul Hegarty подчеркивает важность знакомства с объектно-ориентированным программированием как обязательное требование к курсу, и что этот курс — не для начинающих, начинает профессор с очень подробного рассказа о синтаксисе Swift (Objective-C  в курсе iOS 7) и о возможностях Xcode. Буквально объясняет каждый символ. И может возникнуть обманчивое впечатление, что это курс для начинающих. Но он умышленно это делает вначале, чтобы дальше, при объяснении протоколов, замыканий, анимации, многопоточности, Autolayout (разметки), Size Classes, объектно-ориентированной базы данных Core Data, Dynamic Animation и т.д., не вернуться к этому никогда, и начать говорить только о сложных вещах. Поэтому первые 3-4 лекции — просто находка для тех, кто только начинает разрабатывать iOS приложения.  Дальнейшие лекции потребуют более профессиональной подготовки.

Особый прорыв в изучении программирования в операционной системе iOS удается достичь при выполнении Заданий, которые предлагаются на этих курсах. В курсе обычно бывает 5 или 6 домашних заданий. Первое — очень легкое, нужно в основном повторить то, что профессор показывал на лекции. И это также создает иллюзию, что курс для начинающих. Далее сложность заданий возрастает по экспоненте. Они, как правило, очень интересные, и вы несомненно получите от этого удовольствие. На этом сайте даны варианты решения Заданий, которые можно посмотреть, и предложить свои решения.

На вас в интернете обрушится шквал обучающих курсов либо по Swift типа ««Hello, World»  на языке Swift», либо по iOS 11 типа «Разработка 14 (20?, кто больше?) приложений на  iOS 11».  К сожалению, изучать Swift отдельно от разработки приложений не имеет смысл, так как он проявляет в полной мере свои конструкции только при разработке сложных приложение на iOS 11. Количество приложений тоже не решает проблему, потому что надо методически  идти от простых приложений к реально сложным, чтобы показать и Swift,  и iOS в полной силе. Это оказалось под силу только профессору Paul Hegarty. Поэтому стэнфордские курсы по iOS —  общепризнанно лучшие в мире при изучении программирования на  iOS (Swift, Objective-C). И у вас есть реальная возможность погрузиться в их изучение.

Если кто-то чувствует себя не совсем уверенно с английским или просто хочет почитать материал на русском языке, предлагаю свой неавторизованный конспект лекций на русском языке, сопровождаемый дополнительными комментариями. Конспект составлен с привлечением слайдов и фрагментов кода демонстрационных примеров, что создает иллюзию присутствия на лекции. Конспект хронометрирован через каждые 5 минут, и если вы параллельно включите английскую версию видео курса, то даже не владея английским в совершенстве, вы поймете все нюансы, о которых говорит профессор Paul Hegarty. Даже тем, кто владеет беглым английским, наличие текстового конспекта, который всегда под рукой, позволит освоить материал на более высоком уровне.

На этом сайте выложены все необходимые материалы для изучения пяти вышеупомянутых стэнфордских курсов:  неавторизованные русскоязычные конспекты лекций, демонстрационные примеры и решения Заданий, адаптированные к iOS 11, Swift 4 и современному Objective-C, а также статьи, более глубоко раскрывающие некоторые темы, о которых лишь вскользь упоминалось на лекциях.

Весь материал разделен на 5 тематических частей:

«iOS 11 + Swift 4»

«iOS 10 + Swift 3»

 «iOS 9 + Swift 2.2 +Swift 3»

«iOS 8 + Swift»

» iOS 7+ Objective C»

Кроме того, в разделе Главная размещены в хронологическом порядке лекции, задания и статьи по мере их появления на сайте, и вы можете искать нужный вам материал по категориям и облачным тэгам.

Процесс выполнения заданий на Mac в Xcode 9 — очень увлекательный: хорошая информационная поддержка, результат отображается на симуляторах iPhone и iPad  или на реальных устройствах, визуализация процесса отладки.

Самое интересное заключается в том, что из Xcode 9 вы можете запустить демонстрационные примеры на своем устройстве (или поделится с друзьями) совершенно бесплатно — для этого не нужно иметь сертификат разработчика Developer Account,  стоимостью 99 $/год. Начиная с Xcode 7 политика Apple по отношению к разработчикам изменилась. Они хотят привлекать к разработке приложений более молодых программистов.

После выполнения очередного задания вы другими глазами посмотрите на ту же самую лекцию, которую слушали перед выполнением задания,  она будет для вас абсолютно понятной и логичной, и вы сможете сосредоточиться на важных нюансах, которых в лекциях Пола Хeгэрти очень много.

iTunes U работает на Macs и iOS устройствах. На iPad в программе iTunes U все материалы размещаются в очень удобной форме для просмотра и чтения. Но демонстрационные примеры нужны именно на Mac.

Демонстрационные примеры  для предыдущего курса CS193P Winter 2017  «Developing iOS 10 Apps with Swift»  находятся в этом репозитории на Github для Swift 3  и в этом репозитории для Swift 4.

Решения Заданий  для предыдущего курса CS193P Winter 2017  «Developing iOS 10 Apps with Swift»  находятся в этом репозитории также на Github для Swift 3  и в этом репозитории для Swift 4..

ОБСУЖДЕНИЕ МАТЕРИАЛОВ курса «Разработка iOS приложений с Swift» проводится на private новом форуме на Piazza. Вопросы можно задавать там.

Для регистрации вам необходимо пройти по ссылке:
http://piazza.com/moscow_physical_engineering_institute_bestkora.com/spring2017/mf141
и набрать private  код mf141.

Свежие записи

Лекция 13. Представляющие (Presenting) Views. Навигация. CS193P Spring 2023.

Ниже представлен небольшой фрагмент Лекции 13 Стэнфордского курса CS193P Весна 2023 «Разработка iOS приложений с помощью SwiftUI«.
Полный русскоязычный неавторизованный конспект Лекции 13 в формате Google Doc и в виде PDF-файла, который можно скачать и использовать offline, доступны на платной основе.
Код находится на GitHub.

С полным перечнем Лекций и Домашних Заданий на русском языке можно познакомиться здесь.

. . . . . . . . . . . . . .

TextField и @Binding в действии

Следующее, самое важное — я хочу иметь возможность редактировать название палитры, а также добавлять эмодзи (смайлики).
Как мне сделать это редактируемым текстовым полем?
Редактируемые текстовые поля в Swift — это View отличные от обычного текста Text. Вместо Text они называются TextField.

TextField имеет два аргумента.
Первый аргумент — это то, что мы называем Placeholder (Заполнитель) текста или слово, которое можно использовать, чтобы помочь пользователю понять, о чем мы здесь просим.
Второй аргумент, он называется text — это тот текст, который мы редактируем внутри этого текстового поля TextField.
И еще этот второй аргумент является привязкой Binding.

Если подумать о том, что здесь происходит, то у нас есть текстовое поле TextField, в котором текстом text является “Vehicles”. Мы хотим иметь возможность передать текстовому полю “Vehicles” как начальное значение, и всякий раз, когда что-то меняется в нем, мы хотим знать об этом.
И то, как мы собираемся это сделать, заключается в создании единственного “источника истины” (single source of truth) для этого текста text. Мы будем делать это с помощью привязки Binding.
В частности, этот второй аргумент text текстового поля TextField является привязкой Binding.
TextField знает, что он не хочет поддерживать копию того, что редактируется, он хочет редактировать эту вещь напрямую. Поэтому он просит вас дать ему привязка Binding к этому “источнику истины” (source of truth).
Ну a что является “источником истины” (source of truth) для этого palette.name?
Он находится в нашей ViewModel, в нашем PaletteStore. Следовательно, нам нужно дать здесь нашему TextField обратную привязку Binding к нашей ViewModel.
Для этого нам нужна привязка Binding к палитре palette, которую нам дали отредактировать в верхней части нашего PaletteEditor:

Сделав эту переменную var @Binding, мы заставляем того, кто создаст этот PaletteEditor, дать нам привязку Binding к “источнику истины” (source of truth) для этой палитры palette.
Теперь каждый раз, когда мы ссылаемся на эту палитру palette где угодно в нашем коде здесь, в редакторе PaletteEditor, на самом деле мы будем ссылаться в обратном порядке на палитру в нашей ViewModel.
И мы также можем использовать эту привязку Binding для передачи привязки Binding к имени палитры palette.name в нашем TextField:

Это потому, что для $, то есть projectedValue, для @Binding — это еще одна привязка Binding к той привязке @Binding.
Итак, $palette.name здесь означает привязку Binding к этой @Binding var palette, которая будет привязана в обратный порядке в конечном итоге к нашей ViewModel. Теперь наше текстовое поле TextField будет редактировать имя name палитры palette напрямую в ViewModel.
Вы видите, что эти $, эти привязки Binding, проходят через всю нашу систему Views.

Читать далее
  1. Лекция 12. Постоянное хранение (Persistence). Обертки свойства (Property Wrappers). CS193P Spring 2023. Добавить комментарий
  2. Лекция 11. Жесты, вторая MVVM. CS193P Spring 2023. Комментарии к записи Лекция 11. Жесты, вторая MVVM. CS193P Spring 2023. отключены
  3. Лекция 10. EmojiArt. CS193P Spring 2023. Комментарии к записи Лекция 10. EmojiArt. CS193P Spring 2023. отключены
  4. Лекция 9. Анимация (часть 2). CS193P Spring 2023. Комментарии к записи Лекция 9. Анимация (часть 2). CS193P Spring 2023. отключены
  5. Лекция 8. Анимация (часть 1). CS193P Spring 2023. Комментарии к записи Лекция 8. Анимация (часть 1). CS193P Spring 2023. отключены
  6. Лекция 7. Shape, ViewModifier, Constants. CS193P Spring 2023. Комментарии к записи Лекция 7. Shape, ViewModifier, Constants. CS193P Spring 2023. отключены
  7. Лекция 6. Layout, @ViewBuilder. CS193P Spring 2023. Комментарии к записи Лекция 6. Layout, @ViewBuilder. CS193P Spring 2023. отключены
  8. Лекция 5. Протоколы, перечисления enum, Optional. CS193P Spring 2023. Комментарии к записи Лекция 5. Протоколы, перечисления enum, Optional. CS193P Spring 2023. отключены
  9. Лекция 4. Применение MVVM. CS193P Spring 2023. Комментарии к записи Лекция 4. Применение MVVM. CS193P Spring 2023. отключены