Лекция 2 CS193P Winter 2015 — Больше Xcode и Swift, MVC. (часть 3 — Autolayout)

STANFORD UNIVERSITY: Разработка iOS 8 приложений с Swift CS193P

 Лекция 2: Больше Xcode и Swift

Профессор Пол Хэгарти (Paul Hegarty)

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

Это продолжение: 3 — ая часть лекции (44 минута — конец ) —  Autolayout , MVC. Код для Swift 1.2 этой части на GitHub. Код для Swift 2.0 этой части на GitHub.

Начало: 1 — ая часть лекции (0 — 30 минут) — находится здесь, код для этой части на GitHub.

Продолжение: 2 — ая часть лекции (30 минута — 44 минута )- находится здесь, код для этой части на GitHub.

Последняя вещь, которую я собираюсь сделать — это выполнить Autilayout над кнопками: цифровая клавиатура и кнопки с операциями.

Читать далее

Лекция 2 CS193P Winter 2015 — Больше Xcode и Swift, MVC. (часть 2)

STANFORD UNIVERSITY: Разработка iOS 8 приложений с Swift CS193P

 Лекция 2: Больше Xcode и Swift

Профессор Пол Хэгарти (Paul Hegarty)

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

Это продолжение: 2 — ая часть лекции (30 минута — 44 минута ), код для этой части на GitHub.

Начало: 1 — ая часть лекции (0 — 30 минут) — находится здесь, код для этой части на GitHub.

продолжение: 3 — ая часть лекции  (Autolayout , MVC) (44 минута — конец ) находится здесь, код для этой части на GitHub.

Давайте заставим работать другие кнопки с операциями. Мы видим, что все они подсоединены к нашему

[js]
@IBAction func operate(sender: UIButton)
[/js]

Screen Shot 2015-02-02 at 3.57.22 PM

Код для операции «x» повторим для всех остальных операций

Screen Shot 2015-02-02 at 4.07.31 PMНо это очень плохой код —  масса кода дублируется, и люди решат, что мы ужасные программисты.

Читать далее

Лекция 1 CS193P Winter 2015 — Логистика курса, обзор iOS 8. (часть 2)

Title iOS 8

STANFORD UNIVERSITY:

Разработка iOS 8 приложений с Swift CS193P

 Лекция 1: Логистика курса, обзор iOS 8

Профессор Пол Хэгарти (Paul Hegarty)

Начало: 1 — ая часть лекции (0 — 35 минут) можно найти здесь.

Продолжение: 2 -я часть лекции (35 минута  — конец).

Давайте немного поговорим о связи пользовательского интерфейса, который мы только что создали, с нашим кодом. Мы хотим, чтобы код имел возможность «разговаривать» с пользовательским интерфейсом. Иначе как мы заставим цифры на кнопках, которые мы нажимаем при наборе числа»,  появиться на нашем дисплее, или как нам получить результат умножения, если мы нажали кнопку с заголовком «x»? Нам нужно научиться разговаривать с нашем интерфейсом.

Как мы будем это делать? Во-первых, нам нужно, чтобы и код ( файл ViewController.swift ), и интерфейс (файл Main.storyboard) появились на экране в Xcode одновременно, так как мы собираемся их связывать.

Читать далее

Лекция 1 CS193P Winter 2015 — Логистика курса, обзор iOS 8. (часть 1)

Title iOS 8

Как всегда ежегодная Лекция 1 — это общее введение в курс и обзор iOS, MVC и на этот раз Swift.

… и опять Paul Hegarty подчеркивает важность знакомства с объектно-ориентированным программирование как обязательное требование к курсу. Этот курс не для начинающих.

В обзоре iOS  Paul Hegarty кратко объясняет различные слои  iOS. Начиная с

  • core OS, которое включает ядро, файловую систему, управление питанием, безопасность, C-API, …
  • core services, которые обеспечивают основную функциональность core location, SQLite, доступ к файлам, многопоточность, …
  • media слой с core audio, OpenGL, ES, Quartz, …
  • слой cocoa touch, обеспечивающий технологию multi touch, map kit, управление камерой, controls, core motion, localization, иерархию views , …

    Вторая часть лекции посвящена демонстрации, показывающей:

  • создание проектов в Xcode,
  • построение пользовательского интерфейса с использованием Autolayout,
  • запуск приложения на iOS симуляторе,
  • использование println как отладочный аналог log и его  \( )  нотации для показа содержимого переменных,
  • определение класса в Swift и задание переменных экземпляра класса (instance variables) и методов,
  • привязка свойств ( properties )– instance variables – из Swift кода к outlets пользовательского интерфейса,
  • привязка элементов пользовательского интерфейса к методам в  Swift-code через actions,
  • доступ к  iOS документации,
  • концепция optionals – ?, явное развертывание (unwrapping implicitly) с помощью декларирования с ! и использования   if let

Лекция и слайды (английский язык) как всегда доступны на  iTunes название “1. Logistics, Overview of iOS”.

Русский неавторизованный  конспект Лекции 1 приводится ниже.

Вы также можете читать  PDF-файл конспекта и использовать его offline

Лекция 1 CS193P Winter 2015 iOS 8 .pdf

STANFORD UNIVERSITY: Разработка iOS 8 приложений с Swift CS193P

 Лекция 1: Логистика курса, обзор iOS 8

Профессор Пол Хэгарти (Paul Hegarty)

Русскоязычный неавторизованный конспект лекций принадлежит сайту bestkora.com/IosDeveloper

Начало: 1 — ая часть лекции (0 — 35 минут)
Продолжение: 2 — ая часть лекции (35 минута — конец) находится здесь.

Добро пожаловать на курс CS193P Winter 2015. Это лекция номер 1.

Я немного расскажу о чем этот курс. Дам короткое упоминание о требованиях для этого курса, что очень важно. Затем быстрый обзор составных частей iOS. Я думаю большинство людей знают о чем этот курс. Мы собираемся окунуться в большой демонстрационный пример ( это старый демонстрационный пример), которому я хочу посвятить 2 дня. В течение этих двух дней я введу вас в среду разработки Xcode и язык программирования Swift, который вы должны выучить для разработки на iOS.

Читать далее

Stanford CS 193P iOS 7 Лекция 12 — Documents и Core Data

 Лекция 12 целиком теоретическая и посвящена Core Data.

Начинается с создания Data Model для простейшей задачи с двумя сущностями: Photo и Photographer. Определяются их атрибуты и взаимосвязи. На основе визуальной карты базы данных создаются классы для ManagedObjects: Photo  и Photographer, которые функционируют в контексте ManagedObjectsContext.

Задача получения текущего контекста ManagedObjectsContext решается не традиционным способом через шаблон Core Data ( при создании проекта поставить «галочку»), который выдает кучу кода в AppDelegate.swift, большая часть которого посвящена созданию стэка Core Data, а через UIManagedDocument, который берет на себя все проблемы с созданием стэка Core Data, в том числе ManagedObjectsContext, с безопасностью многопотоковой обработки и т.д. Кроме того, это самый короткий способ перехода к  iCloud.

Рассматривается способ синхронизации множества контекстов ManagedObjectsContexts, указывающих на одну и ту же базу данных, через Notifications.

Создание  subclasses ManagedObjects с помощью Xcode на основе визуальной карты базы данных и использование «точечной нотации» доступа к свойствам, а также наполнение этих  subclasses пользовательскими (custom) методами  через механизм «категорий» ( categories)

Вставка  ManagedObjects, изменение атрибутов, удаление и запросы.

«Дескрипторы сортировки», «маленький язык» предикатов, составные предикаты, использование агрегатных функций KVC (Key Value Coding).

Выполнение запросов и результаты выборки. Faulting.

 Саму лекцию, а также ее слайды на английском языке можно получить через iTunes с названием “12. Documents and Core Data”.

Русский неавторизованный конспект лекции 12, хронометрированный через каждые 5 минут, представлен в PDF — файлах.

Лекция 12 CS193P Fall 2013 -Winter 2014.pdf

Stanford CS 193P iOS 7 Лекция 11 — UITableView и iPad (UISplitViewController, Popover)

Screen Shot 2015-02-17 at 11.19.32 PM

 Лекция 11 начинается с введения в TableView, ее стилей и элементов, с того, как заполняются ее ячейки путем «закачки» данных ( data sources), как пользователь может взаимодействовать с этой таблицей с помощью делегатов ( delegate ). Рассматриваются  replace и push segues, а также table spinners для refresh control.

Вторая теоретическая часть посвящена созданию универсальных (universal) приложений с добавлением отдельной storyboard и функциональности для iPad, а также специфических для iPad Сontrollers таких, как UISpliViewController и Popovers.

Практическая часть лекции демонстрирует как строится универсальное приложение с использованием  TableViewController и NavigationСontroller для iPhone и с использованием TableViewController и UISplitViewController для iPad. Хотя методы делегата UISplitViewController считаются самыми трудоемкими и обременительными во всем iOS, профессор нашел хитроумный способ как сделать их легкими и понятными. Универсальное приложение связано с просмотром фотографий с Flickr. Поэтому в конце лекции профессор Пол Хэгарти показывает другой способ получения данных с сервера Flickr путем создания собственной очереди и возвращения в main queue при работе с UI, используя  GCD или Grand Central Dispatch. Это более изящный способ, чем URL session, обсуждаемая в предыдущих лекциях.

Код для демонстрационного примера Shutterbug этой лекции доступен  здесь

 Саму лекцию, а также ее слайды можно получить через iTunes с названием “11. Table View and iPad”.

Русский неавторизованный конспект лекции 11 представлен в PDF файлах:

Лекция 11 CS193P Fall 2013 -Winter 2014 1.pdf (0 - 10 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 2.pdf ( 10 - 20 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 3.pdf ( 20 - 30 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 4.pdf ( 30 - 40 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 5.pdf ( 40 - 60 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 6.pdf ( 60 минута - конец)

Stanford CS 193P iOS 7 Лекция 10 — Блоки, Многопоточность, Scroll View

Лекция 10 начинается с введение в многопоточность, при этом уделяется  особое внимание тому, как блоки ставятся в очередь (которые затем выполняются на разных потоках) и как запустить длительные по времени задачи без блокировки пользовательского интерфейса  ( UI ) . iOS поддерживает различные APIs – если предыдущие версии этого курса делали акцент на API низкого C уровня, то в этом году появилось Objective-C API и последний в данном курсе предпочтителен.

Вторая часть теории посвящается Scroll Views, как их создать, как добиться скроллинга и zooming (изменения масштаба).

Оставшаяся часть лекции посвящена демонстрационному примеру, который покрывает обе теоретические части: многопоточность и  Scroll Views.

Код демонстрационного примера  «Imaginarium» для этой лекции можно найти на сайте здесь.

Лекция и слайда (английский язык) доступна на  iTunes название “10. Multithreading, Scroll View”.

Русский неавторизованный  конспект Лекции 10, хронометрированный через каждые 5 минут, доступен на

Лекция 10 CS193P Fall 2013 -Winter 2014 1.pdf

Лекция 10 CS193P Fall 2013 -Winter 2014 2.pdf

Лекция 10 CS193P Fall 2013 -Winter 2014 3.pdf

Лекция 10 CS193P Fall 2013 -Winter 2014 4.pdf

Stanford CS 193P iOS 7 Лекция 9 – Анимация и Autolayout (авторазметка)

Лекция 9 начинается с продолжения демонстрации «Dropit» приложения — игры наподобие «Тетрис». Эта демонстрация была начата на прошлой лекции.

Оставшаяся часть лекции посвящена механизму Авторазметки (Autolayout) пользовательского интерфейса и различным способам определения «ограничений» (constraints). Возможности «очень сообразительной» системы Авторазметки показаны в короткой демонстрации  «Attributor Stats».

Код  этой лекции для «DropIt Attach» и «Attributor Stats» доступен  здесь.

Лекция и слайды на английском языке можно получить на iTunes название “9. Animation and Autolayout”.

Русский неавторизованный  конспект Лекции 9, хронометрированный через каждые 5 минут, доступен на

Лекция 9 CS193P Fall 2013 -Winter 2014 1.pdf (0 - 30 минута)

Лекция 9 CS193P Fall 2013 -Winter 2014 2.pdf (30 - 50 минута)

Лекция 9 CS193P Fall 2013 -Winter 2014 3.pdf (50 - конец)

Stanford CS 193P iOS 7 Лекция 8 – Протоколы, Блоки и Анимация

Screen Shot 2015-02-17 at 11.32.48 PMЛекция 8 начинается с очень большой теоретической части.

Протоколы — это способ взаимодействия между не взаимносвязанными проектами, в iOS в основном используются для делегирования функционала (delegates) и «подкачки данных»  (data sources). Протоколы декларируют, какие свойства и методы могут и должны существовать в другом классе, чтобы быть доступны декларирующему протоколы классу.

Блоки (blocks) инкапсулируют куски кода, которые могут передаваться как объекты. Специальное внимание следует уделять коду внутри блоков, который нуждается в доступе к переменным и объектам за пределами блока.

Анимация views может быть выполнена путем анимации их свойств напрямую или  – новое в iOS 7 – на основе «физики» объектов. Если анимируются свойства view, вам необходимо указать время анимации и конечное состояние свойств объекта. Для динамической анимации вы определяете «физические свойства» view и действующие на него силы, возможно, со стороны других views.

Конец лекции — это демонстрация, объясняющая динамическую анимацию более детально на примере игры типа «Тетрис».

Код приложения Dropit для этой лекции доступен  здесь.

Сама лекция, а также слайды на английском языке доступны через iTunes called “8. Protocols, Blocks, and Animation”.

Русский неавторизованный конспект лекции 8, хронометрированный через каждые 5 минут, представлен в PDF — файле.

Лекция 8 CS193P Fall 2013 - Winter 2014 All.pdf

Stanford CS 193P iOS 7 Лекция 7 – Views и жесты

Теоретическая часть Лекции 7 описывает как можно рисовать внутри views с помощью кода и как использовать различные жесты, воспринимаемые этими views. В конце лекции представлена большая и основательная демонстрация «Super Card», показывающая использование всех теоретических приемов рисования и управления жестами.

Код лекции доступен здесь.

Лекция 7 вместе со слайдами на английском языке доступна на  iTunes название “7.Views and Gestures”.

Русский неавторизованный конспект лекции 7, хронометрированный через каждые 5 минут, представлен в PDF — файле.

Лекция 7 CS193P Fall 2013-2014 All.pdf

Можно скачивать по частям:

Лекция 7 CS193P Fall 2013-2014 1.pdf

Лекция 7 CS193P Fall 2013-2014 2.pdf

Лекция 7 CS193P Fall 2013-2014 3.pdf

Лекция 7 CS193P Fall 2013-2014 4.pdf