Лекция 16 CS193P Winter 2017 — Alerts (экстренные сообщения) и Action Sheets (списки действий), Notifications (уведомления), Application Lifecycle («жизненный цикл» приложения) и Persistence (постоянное хранение).

В Лекции 16 освещаются разнообразные темы:

  • Экстренные сообщения Alerts и списки действий Action Sheets
  • Уведомления Notifications
  • “Жизненный цикл” приложения (UIApplication, AppDelegate, Info.plist, Capabilities)
  • Постоянное хранение Persistence

Alerts (экстренные уведомления) и Action Sheets (списки действий)

В iOS существуют два типа механизмов, которые позволяют с помощью “всплывающего окна” что-то спросить у пользователя. Один называется Alert  (экстренное сообщение), а другой — Action Sheets (список действий).

Они используют один и тот же API. Имеется некоторая разница между этими двумя механизмами. Наиболее легкий способ увидеть разницу между Alert и Action Sheets — это посмотреть пример, представленный на слайдах. В качестве такого примера Пол Хагерти взял уже знакомое нам приложение Cassini и на нем продемонстрировал все возможности Alert и Action Sheets. Особое внимание уделяется появлению Action Sheets в Popover «окошке» как на iPhone, так и на iPad. Профессор показывает демонстрационный пример использования экстренных сообщений Alert с текстовым полем внутри для нашего старого товарища — приложения FaceIt.

Notification (уведомления или «радиостанции»)

Это действительно важная часть MVC шаблона конструирования. Она нужна для передачи информации от Model к Controller  или от Глобального контекста к Controller. Иногда   в приложении происходят глобальные вещи, и нам нужно транслировать эту информацию специальным  View Controllers, заинтересованным в ней. View Controllers подписываются на  слушание определенных «радиостанций» и, таким образом, узнают о глобальных событиях в приложении.  В лекции рассказывается о том, как в iOS организован механизм передачи уведомлений, описываемых классом NSNotification: как создать «радиостанцию» и послать уведомление, как получить уведомление путем слушания вещания определенной «радиостанции».

Application Lifecycle («жизненный цикл» приложения)

Приложение имеет 5 состояний:

  • режим Foreground, в котором приложение может находится либо в состоянии Inactive (запущено, но нет UI событий) либо в состоянии Active (запущено, получает и обрабатывает UI события).
  • режим Background, в котором код может работать только ограниченное время и нет UI событий.
  • режим Suspended, в котором код не работает и приложение может быть «убито» в любой момент времени.

В Лекции 16 рассказывается о том, как осуществляется переход между этими состояниями и какие возникают уведомления на уровне приложения. Рассматриваются различные варианты задания установок для приложения, в том числе с помощью Info.plist.

Некоторые режимы в вашем приложении редко бывают активны, поэтому они требуют явного “включения” для их использования. И вы можете это сделать на закладке Сapabilities в установках вашего проекта Project Setting .

Persistence (постоянное хранение)

Пол Хэгерти делает обзор 5-ти способов хранения данных:

  • UserDefaults. Только для очень маленького объема данных в формате Property List.
  • Core Data. Вы очень хорошо с этим знакомы!
  • Архивирование (Archiving). Очень редко используется для постоянного хранения, но именно так постоянно сохраняются storyboards.
  • SQLite. Также очень редко используется, если только вам не досталась SQL база данных по наследству и вы должны обеспечить к ней доступ.
  • Файловая система. iOS имеет файловую систему Unix в своей основе, но файлы можно читать и писать только в sandbox (“песочнице”).

Профессор считает только 2 из них приемлемыми для работы с большим объемом данных в  iOS: файловая система типа Unix и Core Data. Core Data были специально  посвящены Лекция 10 и Лекция 11, а файловую систему профессор очень подробно рассматривает в конце данной Лекции:  получение URL для одной из специальных директорий типа Documents или Caches, получение URL новых директорий и файлов с помощью методов класса URL, создание директорий и файлов, чтение и запись данных типа Data в файл.

Лекции и слайды на английском языке представлены в iTunes название “16. Alerts and Action Sheets, Notifications, Application Lifecycle, and Persistence.”. Код демонстрационного примера «L16 Faceit» доступен на Github.

Русскоязычный неавторизованный конспект Лекции 16, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также Google Doc доступны на платной основе.