Stanford CS 193P iOS 7 Лекция 14 — UIApplication, Network Activity Indicator и Maps ( + iOS 9)

Screen Shot 2015-11-15 at 7.04.03 PM
В начале Лекции 14 кратко рассматривается класс приложения UIApplicationУ нашего приложения есть свойство, называемое delegate, которое устанавливается для вас автоматически, и вы получаете объект Application Delegаte, с помощью которого мы можем делать многие глобальные вещи.

Далее изучается одно специальное свойство UIApplication, а именно визуальный индикатором “сетевой” активности — Network Actity Indicator, который является глобальным и булевским. И именно эти две характеристики делают его использование проблематичным в среде с множеством перекрывающихся потоков, использующих сетевые запросы в одно и то же время.

Затем комментируются особенности демонстрационного примера с прошлой лекции, связанного с выборкой данных в фоновом режиме, и продолжает демонстрационный пример Photomania, обеспечивая работу приложения на iPad. Кроме того,  добавляется Popover segue и особенности его работы в Split View. Демонстрируется, как легко можно заимствовать UI из другого приложения путем прямого копирования и вставки элементов пользовательского интерфейса непосредственно на storyboard.

Но здесь начались трудности, потому что Пол Хэгерти все демонстрирует для iOS 7 и  активно использует класс UIPopoverController, который упразднен в iOS 9. Вместо него в iOS 9 используется  UIPopoverPresentationController, который доступен с iOS 8.
Концепция Popover осталась той же самой: нам необходим View Controller, как содержимое, которое показывается внутри Popover, который сам по себе является другим объектом (теперь он называется Popover Presentation Controller).

С учетом вышеизложенного в конспекте Лекции 14 мною сделаны необходимые пометки, связанные с изменением кода для текущей версии iOS 9. Однако основное изменение, которое должно быть сделано для iOS 9 — это использование адаптивного интерфейса с одной storyboard для всех мыслимых приборов и их размеров. Адаптивный интерфейс позволяет также получить Popover небольшого размера и на всех iPhone. Но это уже совсем другое приложение и вы можете посмотреть, как его построить в Дополнении к Лекции 14. Адаптивные SplitViewController и Popover в iOS 9. Код Photomania URL Universal  с адаптивным интерфейсом в iOS 9 представлен на Github.  В результате с помощью одной storyboard для универсального приложения, мы получаем работающий Split View и Popover виде маленького «окошка» как на iPhone, так и на iPad. Причем в ландшафтном режиме для iPhone 6 Plus и iPhone 6s Plus (оба имеют горизонтальный Regular size class) работает полноценный MasterDetail режим:

Screen Shot 2015-11-16 at 4.25.26 PM
 Особенно великолепна часть демонстрационного примера, связанная с применением принципа полиморфизма объектно-ориентированного программирования и настройкой класса СoreDataTableViewControllers для выборки нужных данных из Core Data.
 Заключительная часть лекции посвящена тому, как ваш iPhone может определять, где вы находитесь в этом мире, на этой планете. К этому имеют отношение два компонента: Core Location и MapKitCore Location — это “внутренность” программного обеспечения по определению местоположения, не-UI часть, а MapKit — это наоборот пользовательский интерфейс (UI), то есть как мы представляем пользователю информацию о том, где мы находимся на карте.
Основным объектом, который представляет ваше местоположение, является CLLocation,  CL — это сокращение для Core Location. Объект CLLocation, описывающий местоположение, имеет свойства:  координаты, высота, горизонтальная и вертикальная точность измерения местоположения, временная отметка, скорость, курс, указывающий направление. Но главным в местоположении, конечно, являются широта latitude и долгота longitude. Высота — это отдельная переменная altitude.
Важным показателем определения координат и высоты является точность, которая не похожа на обычную точность в %. В действительности, это один из заранее определенных терминов. Пол Хэгарти подробно рассказывает об этом в лекции. Но всегда большая точность требует большой энергии.
В Лекции 14 подробно освещаются различные типы мониторинга вашего местоположения: непрерывное, основанное на «значительных изменениях» и  основанное на регионах.
Лекция и слайды на английском языке находятся на  iTunes название “14. UIApplication, Network Activity Indicator and MapKIt.”  
Код для демонстрационных примеров Photomania URL Universal можно найти для iOS 9 здесьPhotomania Split Popover с адаптивные интерфейсом а для iOS 9 и Xcode 9 на Github.

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

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