О пакетах

Пакеты являются удобным способом поставить программное обеспечение в OS X и iOS. Пакеты обеспечивают упрощенный интерфейс для конечных пользователей и одновременно предоставляют поддержку для разработки. Эта глава обеспечивает введение в пакеты и обсуждает роль, которую они играют в OS X и iOS.

Пакеты и пакеты

Несмотря на то, что пакеты и пакеты иногда именуются взаимозаменяемо, они фактически представляют очень отличные понятия:

Пакеты обеспечивают одну из фундаментальных абстракций, делающую OS X простым в использовании. При рассмотрении приложения или плагина на компьютере на что Вы фактически смотрите, каталог. В пакете каталог является кодом, и файлы ресурсов должны были подать заявку или выполненный плагин. Когда Вы взаимодействуете с каталогом пакета, однако, Средство поиска обрабатывает его как единственный файл. Это поведение препятствует тому, чтобы обычные пользователи внесли изменения, которые могли бы оказать негативное влияние на содержание пакета. Например, это препятствует тому, чтобы пользователи перестроили или удалили ресурсы или модули кода, которые могли бы препятствовать тому, чтобы приложение работало правильно.

Принимая во внимание, что пакеты должны там улучшить пользовательский опыт, пакеты приспособлены больше к помощи разработчикам упаковать их код и к помощи доступу операционной системы тот код. Пакеты определяют базовую структуру для организации кода и ресурсов, связанных с Вашим программным обеспечением. Присутствие этой структуры также помогает упростить важные функции, такие как локализация. Точная структура пакета зависит от того, создаете ли Вы приложение, платформу или плагин. Это также зависит от других факторов, таких как целевая платформа и тип плагина.

Причина пакеты и пакеты иногда считаются взаимозаменяемыми, состоит в том, что много типов пакетов являются также пакетами. Например, приложения и загружаемые пакеты являются пакетами, потому что они обычно обрабатываются как непрозрачные каталоги системой. Однако не все пакеты являются пакетами и наоборот.

Как система идентифицирует пакеты и пакеты

Средство поиска полагает, что каталог пакет, если какое-либо из следующих условий является истиной:

  • Каталог имеет известное расширение файла: .app, .bundle, .framework, .plugin, .kext, и т.д.

  • Каталог имеет расширение, что некоторые другие требования приложения представляют тип пакета; посмотрите Пакеты документов.

  • Каталог имеет свой набор битов пакета.

Предпочтительный способ указать пакет состоит в том, чтобы дать каталогу пакета известное расширение файла. По большей части XCode заботится об этом для Вас путем обеспечения шаблонов, применяющих правильный номер. Все, что необходимо сделать, создают проект XCode надлежащего типа.

Большинство пакетов является также пакетами. Например, приложения и плагины обычно представляются как единственный файл Средством поиска. Однако это не истина для всех типов пакета. В частности платформа является типом пакета, обрабатывающегося как единый блок в целях соединения и использования во время выполнения, но каталоги платформы прозрачны так, чтобы разработчики могли просмотреть заголовочные файлы и другие ресурсы, которые они содержат.

Об именах дисплея пакета

Имена дисплея дают пользователю некоторый контроль над тем, как пакеты и пакеты появляются в Средстве поиска, не повреждая клиенты, полагающиеся на них. Принимая во внимание, что пользователь может переименовать файл свободно, переименовав приложение, или платформа могла бы вызвать связанные модули кода, обращающиеся к приложению или платформе по имени для повреждения. Поэтому, когда пользователь изменяет имя пакета, изменение является поверхностным только. Вместо того, чтобы изменять имя пакета в файловой системе, Средство поиска связывает отдельную строку (известный как имя дисплея) с пакетом и дисплеями та строка вместо этого.

Имена дисплея для представления пользователю только. Вы никогда не используете имена дисплея, чтобы открыть или получить доступ к каталогам в Вашем коде, но Вы действительно используете их при отображении имени каталога пользователю. По умолчанию имя дисплея пакета совпадает с самим именем пакета. Однако система может изменить имя дисплея по умолчанию в следующих случаях:

  • Если пакет является приложением, Средство поиска скрывается .app расширение в большинстве случаев.

  • Если поддержки пакета локализовали имена дисплея (и пользователь явно не изменил имя пакета), Средство поиска выводит на экран имя, соответствующее текущие языковые настройки пользователя.

Несмотря на то, что Средство поиска скрывается .app расширение для приложений большую часть времени, это может вывести на экран его для предотвращения беспорядка. Например, если пользователь изменяет имя приложения, и новое имя содержит другое расширение файла, Средство поиска показывает .app. расширение, чтобы прояснить, что пакет является приложением. Например, если необходимо было добавить .mov расширение Chess приложение, Средство поиска вывело бы на экран Chess.mov.app препятствовать тому, чтобы думали пользователи Chess.mov файл QuickTime.

Для получения дополнительной информации об именах дисплея и указании локализованных имен пакета, см. Обзор Файловой системы.

Преимущества пакетов

Пакеты предоставляют следующие преимущества разработчикам:

Типы пакетов

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

Несмотря на то, что форматы документов могут эффективно использовать структуру пакета для организации их содержания, документы обычно не считают пакетами в самом чистом смысле. Документ, реализованный как каталог и обработанный как непрозрачный тип, считается пакетом документов, независимо от его внутреннего формата. Для получения дополнительной информации о пакетах документов, посмотрите Пакеты документов.

Создание пакета

По большей части Вы не создаете пакеты или пакеты вручную. Когда Вы создаете новый проект XCode (или добавьте цель к существующему проекту), XCode автоматически создает требуемую структуру пакета при необходимости. Например, приложение, платформа и загружаемый пакет предназначаются, все связали структуры пакета. При создании любой из этих целей XCode автоматически создает соответствующий пакет для Вас.

При использовании make-файлов (вместо XCode) для разрабатывания проектов, нет никакого волшебства к созданию пакета. Пакет является просто каталогом в файловой системе с четко определенной структурой и определенным расширением файла, добавленным до конца имени каталога пакета. Пока Вы создаете каталог пакета верхнего уровня и структурируете содержание Вашего пакета соответственно, можно получить доступ к тому содержанию с помощью программируемой поддержки доступа к пакетам. Для получения дополнительной информации о том, как структурировать Ваш каталог пакета, посмотрите Структуры Пакета.

Программируемая поддержка доступа к пакетам

Программы, относящиеся к пакетам или самостоятельно связывающиеся, могут использовать в своих интересах интерфейсы в Какао и Базовой Основе для доступа к содержанию пакета. Используя эти интерфейсы можно найти ресурсы пакета, получить информацию о конфигурации пакета и загрузить исполняемый код. В приложениях Objective C Вы используете NSBundle класс, чтобы добраться и управлять информацией о пакете. Для приложений на базе С можно использовать функции, связанные с CFBundleRef непрозрачный тип для управления пакетом.

Для получения информации о том, как использовать программируемую поддержку в Какао и Базовой Основе для доступа к пакетам, посмотрите Доступ к Содержанию Пакета.

Инструкции для Использования пакетов

Пакеты являются предпочтительным организационным механизмом для программного обеспечения в OS X и iOS. Структура пакета позволяет Вам исполняемый код группы и ресурсы для поддержки того кода в одном месте и организованным способом. Следующие инструкции дают некоторый дополнительный совет о том, как использовать пакеты: