Пакет
Пакет является каталогом в файловой системе, которой исполняемый код групп и связанные ресурсы, такие как изображения и звучат вместе в одном месте. В iOS и OS X, приложения, платформы, плагины и другие типы программного обеспечения являются пакетами. Пакет является каталогом со стандартизированной иерархической структурой, содержащей исполняемый код и ресурсы, используемые тем кодом. Основа и Базовая Основа включают средства для определения местоположения и загрузки кода и ресурсов в пакетах.
Пакеты приносят несколько преимуществ пользователям и разработчикам. Они упрощают устанавливать или перемещать приложение или другую часть программного обеспечения путем простого перемещения его от одного расположения до другого. Пакеты являются также важным фактором в интернационализации. Вы храните локализованные ресурсы в специально именованных подкаталогах пакета; программируемые средства ищут локализованные ресурсы в расположении, соответствующем предпочтениям языка пользователя.
Большинство типов проектов XCode создает пакет для Вас при создании исполнимой программы. Поэтому редко необходимо создавать пакет вручную. Несмотря на это, важно понять их структуру и как получить доступ к коду и ресурсам в них.
Структура и содержание пакетов
Пакет может содержать исполняемый код, изображения, звуки, файлы пера, частные платформы и библиотеки, плагины, загружаемые пакеты или любой другой тип кода или ресурса. Это также содержит конфигурационный файл во время выполнения, названный информационным списком свойств (Info.plist
). Каждый из этих элементов имеет свое надлежащее место в структуре пакета. Ресурсы, такие как изображения, звуки и файлы пера депонированы в Resources
подкаталог. Они могут быть или локализованы или нелокализованы. Локализованные файлы (включая строковые файлы, которые являются наборами локализованных строк) помещаются в подкаталоги Resources
это имеет расширение lproj
и имя, соответствующее языку и возможно локали.
Доступ к ресурсам пакета
Каждое приложение имеет основной пакет, который является пакетом, содержащим код приложения. Когда пользователь запускает приложение, оно находит код и ресурсы в основном пакете, что оно сразу нуждается и загружает их в память. После того приложение может динамично (и лениво) код загрузки и ресурсы от основного пакета или подчинять пакеты как требуется.
NSBundle
класс и, для процедурного кода, CFBundleRef
непрозрачный тип Базовой Основы дает Вашему приложению средние значения для определения местоположения ресурсов в пакете. В Objective C сначала необходимо получить экземпляр NSBundle
это соответствует физическому пакету. Для получения основного пакета приложения вызовите метод класса mainBundle
.Прочее. NSBundle
обратные тракты методов для связывания ресурсов, когда дали имя файла, расширение, и (дополнительно) подкаталог пакета. После того, как у Вас будет путь к ресурсу, можно загрузить его в память с помощью надлежащего класса.
Загружаемые пакеты
Как с комплектами приложений, загружаемым исполняемым кодом пакета пакетов и связанными ресурсами, но Вы явно загружаете эти пакеты во время выполнения. Можно использовать загружаемые пакеты для разработки приложений, которые являются очень модульными, настраиваемыми, и расширяемыми. Каждый загружаемый пакет имеет основной класс, который является точкой входа для пакета; при загрузке пакета необходимо спросить NSBundle
для основного класса и использования возвращенный Class
объект создать экземпляр класса.