Лекция 13 CS193P Winter 2015 — Application Lifecycle («жизненный цикл приложения») и Core Motion

Screen Shot 2015-09-02 at 8.52.27 AM

В Лекции 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.

Screen Shot 2015-09-01 at 9.04.09 PM

Core Motion

Core Motion  поставляет в приложение данные первичных датчиков Apple приборов (iPhone, iPad, iPod Touch):  акселерометра (accelerometer), гироскопа (gyro) и магнитометра (magnetometer). Некоторые старые приборы могут их не иметь.

Класс, с помощью которого вы можете получить всю информацию как с самих датчиков, так и о наличии датчиков в приборе, называется CMMotionManager. В лекции подробно рассматриваются различные режимы получения информации как с физических датчиков, так и с абстрактного комбинированного датчика CMDeviceMotion.

Датчики движения в iOS — удивительный механизм.И надо отдать должное инженерам Apple — подключение датчиков к приложению является предельно простым, а их дальнейшее использование не ограничивает вас ни в чём, давая простор для творчества. Как и все приложения, дополненные реальностью они захватывают в первую очередь тем, что дают вам в руки инструмент для преобразования информации об окружающем вас мире в виртуальный мир вашего телефона.

Завершает данный раздел элегантный демонстрационный пример Bouncer, в котором показания датчиков «подцепляются» к Dynamic Animator, и мы можем движением и вращением  реального прибора управлять движением «красного квадратика» на экране.

Screen Shot 2015-09-02 at 8.49.12 AM

Лекция и слайды на английском языке находятся на  iTunes название “13. Application Lifecycle and Core Motion.”

Код для демонстрационных примеров Trax AirDrop и Bouncer можно найти для Swift 1.2 на сайте Stanford, а для Swift 2.0 и Xcode 7 здесь.

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