В Лекции 13 на сцену выходит в главной роли файл AppDelegate, до сих пор прятаемый Полом Хэгерти во вспомогательную папку Supporting Files, чтобы не мешал. В результате в Лекция 13 освещаются три темы:
NSNotification
Это действительно важная часть MVC шаблона конструирования. Она нужно для передачи информации от Model к Controller или от Глобального контекста к Controller. Иногда в приложении происходят глобальные вещи, и нам нужно транслировать эту информацию специальным View Controllers, заинтересованным в ней. View Controllers подписываются на слушание определенных «радиостанций» и, таким образом, узнают о глобальных событиях в приложении. В лекции рассказывается о том, как в iOS организован механизм передачи уведомлений, описываемых классом NSNotification: как создать «радиостанцию» и послать уведомление, как получить уведомление путем слушания вещания определенной «радиостанции».
Application Lifecycle
Приложение имеет 4 состояния:
- режим Foreground, в котором приложение может находится либо в состоянии Inactive (запущено, но нет UI событий) либо в состоянии Active (запущено, получает и обрабатывает UI события).
- режим Background, в котором код может работать только ограниченное время и нет UI событий.
- режим Suspended, в котором код не работает и приложение может быть «убито» в любой момент времени.
В лекции рассказывается о том, как осуществляется переход между этими состояниями и какие возникают сообщения на уровне приложения. Рассматриваются различные варианты задания установок для приложения, в том числе с помощью Info.plist. Для закрепления материала показывается замечательный и очень эффектный демонстрационный пример Trax AirDrop с применением технологии AirDrop.
Core Motion
Core Motion поставляет в приложение данные первичных датчиков Apple приборов (iPhone, iPad, iPod Touch): акселерометра (accelerometer), гироскопа (gyro) и магнитометра (magnetometer). Некоторые старые приборы могут их не иметь.
Класс, с помощью которого вы можете получить всю информацию как с самих датчиков, так и о наличии датчиков в приборе, называется CMMotionManager. В лекции подробно рассматриваются различные режимы получения информации как с физических датчиков, так и с абстрактного комбинированного датчика CMDeviceMotion.
Датчики движения в iOS — удивительный механизм.И надо отдать должное инженерам Apple — подключение датчиков к приложению является предельно простым, а их дальнейшее использование не ограничивает вас ни в чём, давая простор для творчества. Как и все приложения, дополненные реальностью они захватывают в первую очередь тем, что дают вам в руки инструмент для преобразования информации об окружающем вас мире в виртуальный мир вашего телефона.
Завершает данный раздел элегантный демонстрационный пример Bouncer, в котором показания датчиков «подцепляются» к Dynamic Animator, и мы можем движением и вращением реального прибора управлять движением «красного квадратика» на экране.
Лекция и слайды на английском языке находятся на iTunes название “13. Application Lifecycle and Core Motion.”
Код для демонстрационных примеров Trax AirDrop и Bouncer можно найти для Swift 1.2 на сайте Stanford, а для Swift 2.0 и Xcode 7 здесь.
Русский неавторизованный конспект лекции , хронометрированный через каждые 5 минут, представлен в PDF — файле, который доступен на платной основе.