Хорошее понимание iOS SDK является ключевым моментом при разработке нативных приложений для iOS. Это не только поможет вам выбрать правильные инструменты для решения конкретной проблемы, но также поможет вам не потеряться в десятках платформ, включенных в SDK. В этой статье мы рассмотрим архитектуру iOS и выясним, что работает под iOS-приложениями.
Что такое iOS SDK?
Я уверен, что даже нескольким опытным разработчикам iOS будет сложно определить iOS SDK в одном предложении. SDK акроним расшифровывается как Software Development Kit . IOS SDK содержит инструменты и ресурсы для разработки собственных приложений iOS. Это означает, что SDK позволяет разработчикам разрабатывать, устанавливать, запускать и тестировать приложения в симуляторе и на физических устройствах.
Двумя движущими силами, приводящими в действие нативные приложения для iOS, являются Swift (или Objective-C) и родные системные платформы iOS. В предыдущих статьях мы исследовали язык программирования Swift. В этой статье я хочу исследовать фреймворки, которые поддерживают собственные приложения iOS.
Это включает в себя платформы высокого уровня, такие как UIKit и Map Kit , а также платформы, тесно связанные с аппаратным обеспечением, такие как платформы Accelerate и Core Location .
Что такое родное приложение для iOS?
Теперь вы знаете, что такое iOS SDK, но что делает приложение квалифицированным как приложение для iOS? Простой ответ заключается в том, что приложение iOS — это приложение, которое работает на устройстве iOS. Это только половина правды, хотя. А как насчет веб-приложений, которые работают в Safari?
Приложение iOS — это приложение Cocoa, разработанное для платформы iOS. Отлично. Что такое приложение Какао? Приложение с какао определить немного сложнее. Это язык, на котором написано приложение? На самом деле, нет. Это инструменты, с помощью которых создается приложение Какао? Нет. Можно разработать приложение Какао без помощи Xcode.
Apple определяет приложение Какао как приложение, которое состоит из объектов, которые в конечном итоге наследуются от NSObject
, корневого класса, объявленного в платформе Foundation , и который тесно интегрирован со средой выполнения Objective C.
В этой статье я хочу сосредоточиться на фреймворках, которые используются для создания нативных приложений для iOS. Если вы заинтересованы в получении дополнительной информации о среде выполнения Objective-C, которая также используется Swift, я рекомендую взглянуть на справочник Apple по Objective-C времени выполнения или прочитать Руководство по программированию среды выполнения Objective-C .
Платформа Foundation предоставляет второй корневой класс, NSProxy
. Тем не менее, вы редко будете использовать его в своих проектах.
iOS архитектура
Еще одно отличие от веб-приложений, работающих в Safari, заключается в том, что нативные приложения взаимодействуют напрямую с операционной системой iOS и собственными системными платформами iOS. Операционная система действует как посредник между приложением и базовым оборудованием. Основным преимуществом этого посредничества или абстракции является то, что нативным приложениям не нужно беспокоиться о будущих изменениях оборудования или спецификаций устройств.
Операционная система предоставляет родным приложениям необходимую информацию о возможностях оборудования (есть ли у устройства камера?) И технических характеристиках устройства (работает ли приложение на iPhone или iPad?).
Архитектура iOS может быть разбита на четыре отдельных уровня:
- Какао Touch
- СМИ
- Основные услуги
- ОС ядра
Эта многоуровневая архитектура иллюстрирует этот уровень абстракции, причем более высокие уровни более абстрагированы, а более низкие уровни более фундаментальны и тесно связаны с оборудованием. Само собой разумеется, что слои более высокого уровня полагаются на слои более низкого уровня для некоторых своих функций.
Apple рекомендует использовать фреймворки более высокого уровня, когда это возможно, потому что они часто являются объектно-ориентированными абстракциями фреймворков более низкого уровня. Другими словами, уровни более высокого уровня косвенно взаимодействуют с аппаратными средствами через уровни более низкого уровня, которые по своей природе являются более сложными. Конечно, все еще возможно вернуться к средам более низкого уровня, если структуры более высокого уровня не отвечают вашим потребностям.
Напоминаем, что фреймворк — это каталог, который содержит динамическую разделяемую библиотеку и связанные с ней ресурсы, такие как заголовочные файлы, изображения и т. Д. Фреймворки — это точки доступа к различным системным интерфейсам, таким как адресная книга iOS, устройство Фотопленка и музыкальная библиотека.
Сенсорный слой какао
В предыдущей статье я писал о Cocoa Touch и его связи со Swift и Objective-C. В этой статье я хотел бы обсудить Touch Cocoa с более функциональной точки зрения. Как приложения используют слой Cocoa Touch? Какова роль Cocoa Touch в архитектуре iOS?
Слой Cocoa Touch — это самый верхний уровень архитектуры iOS. Он содержит некоторые из ключевых платформ, на которые опираются нативные приложения iOS, причем наиболее известной является фреймворк UIKit .
Слой Cocoa Touch определяет базовую инфраструктуру приложений и предоставляет ряд жизненно важных технологий, таких как многозадачный и сенсорный ввод.
Как я уже упоминал, приложения для iOS в значительной степени зависят от инфраструктуры UIKit. Нативные приложения iOS не могут работать, если они не связаны с UIKit и платформами Foundation.
Инфраструктура UIKit, или сокращенно UIKit, адаптирована для платформы iOS. Существует эквивалентная платформа для платформы OS X, платформа Application Kit или AppKit . UIKit предоставляет инфраструктуру для графических приложений iOS, управляемых событиями. Он также заботится о других основных аспектах, характерных для платформы iOS, таких как многозадачность, push-уведомления и доступность.
Слой Cocoa Touch предоставляет разработчикам большое количество высокоуровневых функций, таких как автоматическая разметка, печать, распознаватели жестов и поддержка документов. В дополнение к UIKit, он содержит, помимо прочего, Map Kit, Event Kit и Message UI.
Чтобы получить полный список всех платформ слоя Cocoa Touch, я бы хотел обратиться к руководству Apple по обзору технологий iOS .
Медиа-слой
Графика, аудио и видео обрабатываются слоем Media. Этот уровень содержит ряд ключевых технологий, таких как Core Graphics, OpenGL ES и OpenAL, AV Foundation и Core Media.
Слой «Медиа» содержит большое количество платформ, в том числе инфраструктуру «Библиотека активов» для доступа к фотографиям и видео, хранящимся на устройстве, платформу Core Image для манипулирования изображениями с помощью фильтров и платформу Core Graphics для 2D-рисования.
Взгляните на руководство Apple по обзору технологий iOS для получения полного списка всех платформ слоя Media.
Уровень основных услуг
Уровень Core Services отвечает за управление основными системными службами, которые используют нативные приложения iOS. Уровень касания Cocoa зависит от уровня Core Services для некоторых его функций. Уровень Core Services также предоставляет ряд незаменимых функций, таких как блочные объекты, Grand Central Dispatch, In-App Purchase и iCloud Storage.
Одним из наиболее полезных дополнений к уровню Core Services является ARC или Автоматический подсчет ссылок . ARC — это функция уровня компилятора, представленная в 2011 году вместе с выпуском iOS 5. ARC упрощает процесс управления памятью в Objective-C.
Управление памятью — это тема, которую мы не рассмотрели в этой серии, но важно, чтобы вы понимали основы управления памятью при разработке приложений Какао. Автоматический подсчет ссылок — отличное дополнение, но важно знать, что ARC делает для вас.
Вы можете прочитать больше об управлении памятью в Программирование с Objective-C, и я настоятельно рекомендую вам это сделать.
Фреймворк Foundation, или, если коротко, Foundation, является еще одной важной платформой для приложений iOS и OS X В следующей статье мы рассмотрим эту структуру более подробно. Платформа Foundation — это не просто набор полезных классов, таких как NSArray
, NSDictionary
и NSDate
.
Foundation предоставляет корневой класс NSObject
, который обеспечивает базовый интерфейс для среды выполнения Objective C, а также вводит несколько парадигм, таких как политики для владения объектами. Как и Core Foundation (см. Ниже), Foundation позволяет различным библиотекам и инфраструктурам легко обмениваться данными и кодом.
Другой важной структурой уровня Core Services, тесно связанной с платформой Foundation, является базовая платформа на основе C, или сокращенно Core Foundation. Как и платформа Foundation, она позволяет различным библиотекам и инфраструктурам обмениваться данными и кодом.
Базовая основа имеет функцию, известную как бесплатное мостовое соединение , которая позволяет заменять объекты Какао на объекты Базовой основы в параметрах функций и наоборот.
Для получения полного списка всех структур уровня Core Services я хотел бы обратиться к руководству по обзору технологий iOS .
Уровень ядра ОС
Большая часть функций, предоставляемых тремя уровнями более высокого уровня, построена на уровне базовой ОС и его низкоуровневых функций. Уровень Core OS предоставляет несколько платформ, которые ваше приложение может использовать напрямую, таких как платформы Accelerate и Security.
Уровень ядра ОС также инкапсулирует среду ядра и низкоуровневые интерфейсы UNIX, к которым ваше приложение не имеет доступа по очевидным причинам безопасности. Однако через библиотеку libSystem на основе C можно напрямую получить доступ ко многим низкоуровневым функциям, таким как сокеты BSD, потоки POSIX и службы DNS.
Документация
Ваш ближайший союзник при разработке нативных приложений для iOS — это документация, прилагаемая к iOS SDK. По большей части документация является выдающейся, и она поможет вам освоиться с новой технологией или структурой без особых усилий.
Несмотря на то, что документация доступна онлайн, большинство разработчиков используют браузер документации, который включен в XCode. В Xcode 7, Вы можете найти браузер документации, выбрав Документацию и Ссылку API из меню Окна Xcode.
Поскольку вы будете широко использовать документацию, вам может понадобиться несколько сочетаний клавиш, чтобы найти то, что вы ищете в документации. Как я упоминал в предыдущем абзаце, браузер документации обеспечивает легкий доступ к документации. Чтобы быстро получить доступ к документации, нажмите Ctrl + Shift + 0 в Xcode.
Во время разработки может быстро стать громоздким переключаться между редактором кода и браузером документации каждый раз, когда вам нужно найти символ, такой как класс, метод или структура.
Есть два решения для эффективного просмотра документации. Всякий раз, когда вы помещаете курсор на имя класса или метода в редакторе кода XCode, инспектор быстрой справки на правой боковой панели показывает сводку соответствующего символа. Сводка содержит несколько полезных ссылок, которые ведут в браузер документации.
Поскольку я обычно скрываю правую боковую панель, когда работаю в редакторе кода, я использую альтернативный метод для отображения документации класса или метода. Всякий раз, когда вы нажимаете клавишу параметров и наводите курсор на символ, курсор меняется на знак вопроса, и символ выделяется.
Если щелкнуть символ со знаком вопроса, появится новое окно, содержащее ту же сводку, что и инспектор быстрой справки . Нажав на одну из ссылок в окне, вы попадете в браузер документации. Это быстрый и удобный способ переключения между редактором кода и браузером документации, особенно при работе с двумя мониторами.
Вывод
Теперь вы должны хорошо понимать iOS SDK и различные уровни архитектуры iOS. Две основные платформы приложения для iOS, UIKit и Foundation, находятся в центре внимания следующих двух частей этой серии.
Эти платформы не только необходимы для каждого приложения iOS, они содержат десятки классов, которые вы часто будете использовать при разработке собственных приложений iOS.
Если у вас есть какие-либо вопросы или комментарии, вы можете оставить их в комментариях ниже или обратиться ко мне в Twitter .