Хорошее понимание iOS SDK является ключевым моментом при разработке нативных приложений для iOS. Это не только поможет вам выбрать правильные инструменты для решения конкретной проблемы, но также позволит вам не потеряться в десятках платформ, включенных в iOS SDK. В этой статье мы рассмотрим архитектуру iOS и выясним, что работает под iOS-приложениями.
Что такое iOS SDK?
Я уверен, что даже нескольким опытным разработчикам iOS будет сложно определить iOS SDK в одном предложении. SDK акроним расшифровывается как S разработки программного обеспечения K it. IOS SDK содержит инструменты и ресурсы для разработки собственных приложений iOS, а это означает, что SDK позволяет разработчикам разрабатывать, устанавливать, запускать и тестировать приложения в симуляторе iOS и на физических устройствах.
Двумя движущими силами, приводящими в действие собственные приложения для iOS, являются Objective-C и системные платформы для iOS. В предыдущей статье мы исследовали язык программирования Objective-C. В этой статье я хочу исследовать фреймворки, которые поддерживают собственные приложения 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, я рекомендую взглянуть на справочник Apple по Objective C или прочитать Руководство по программированию Objective C.
Платформа Foundation предоставляет второй корневой класс, NSProxy
. Тем не менее, вы редко будете использовать его в своих проектах.
Архитектура iOS
Еще одно отличие от веб-приложений, работающих в браузере Safari, заключается в том, что нативные приложения взаимодействуют напрямую с операционной системой iOS и собственными системными платформами iOS. Операционная система действует как посредник между приложением и базовым оборудованием. Основным преимуществом этого посредничества или абстракции является то, что нативным приложениям не нужно беспокоиться о будущих изменениях оборудования или спецификаций устройств.
Операционная система предоставляет родным приложениям необходимую информацию о возможностях оборудования (есть ли у устройства камера?) И технических характеристиках устройства (работает ли приложение на iPhone или iPad?).
Архитектура iOS может быть разбита на четыре отдельных уровня:
- Какао Touch
- СМИ
- Основные услуги
- ОС ядра
Эта многоуровневая архитектура иллюстрирует этот уровень абстракции, причем более высокие уровни более абстрагированы, а более низкие уровни более фундаментальны и тесно связаны с аппаратным обеспечением. Само собой разумеется, что слои более высокого уровня полагаются на слои более низкого уровня для некоторых своих функций.
Apple рекомендует в максимально возможной степени использовать платформы более высокого уровня, поскольку они часто являются объектно-ориентированными абстракциями структур более низкого уровня. Другими словами, уровни более высокого уровня косвенно взаимодействуют с аппаратными средствами через уровни более низкого уровня, которые по своей природе являются более сложными. Конечно, все еще возможно вернуться к средам более низкого уровня, если структуры более высокого уровня не отвечают вашим потребностям.
Напоминаем, что фреймворк — это каталог, который содержит динамическую разделяемую библиотеку и связанные с ней ресурсы, такие как заголовочные файлы, изображения и т. Д. Фреймворки — это точки доступа к различным системным интерфейсам, таким как адресная книга iOS, устройство Фотопленка и музыкальная библиотека.
Сенсорный слой какао
В предыдущей статье я писал о Cocoa Touch и его отношении к Objective-C. В этой статье я хотел бы обсудить 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 framework. 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 Touch в значительной степени зависит от уровня 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 5, Вы можете найти браузер документации, выбрав Documentation и Справочник по API из меню Window Xcode.
Поскольку вы будете широко использовать документацию, вам может понадобиться несколько сочетаний клавиш, чтобы найти то, что вы ищете в документации. Как я упоминал в предыдущем абзаце, браузер документации обеспечивает легкий доступ к документации. Чтобы быстро получить доступ к документации, нажмите Shift + Command + 0
в Xcode 5.
Во время написания кода в редакторе кода Xcode может быстро стать громоздким переключаться между редактором кода и браузером документации каждый раз, когда вам нужно найти класс или метод.
Есть два решения для эффективного просмотра документации. Всякий раз, когда вы помещаете курсор на имя класса или метода в редакторе кода XCode, инспектор быстрой справки на правой боковой панели показывает сводку соответствующего класса или метода. Сводка содержит несколько полезных ссылок, которые ведут в браузер документации.
Поскольку я обычно скрываю правую боковую панель, когда работаю в редакторе кода, я использую альтернативный метод для отображения документации класса или метода. Всякий раз, когда вы нажимаете клавишу Option
и наводите курсор на имя класса или метода, курсоры изменяются на знак вопроса, и имя класса или метода выделяется. Если щелкнуть имя класса или метода со знаком вопроса, появится новое окно, содержащее ту же сводку, что и инспектор быстрой справки . Нажав на одну из ссылок в окне, вы попадете в браузер документации. Это быстрый и удобный способ переключения между редактором кода и браузером документации, особенно при работе с двумя мониторами.
Вывод
Теперь вы должны хорошо понимать iOS SDK и различные уровни архитектуры iOS. Две основные платформы приложения для iOS, UIKit и Foundation, находятся в центре внимания следующих двух частей этой серии.
Эти платформы не только необходимы для каждого приложения iOS, они содержат десятки классов, которые вы часто будете использовать при разработке собственных приложений iOS.