В Лекции 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 доступны на платной основе.