Что такое Framework в Mac OS X? (*.framework папки)

Хорошо, я знаю, что такое основа в реальной жизни. Я видел некоторые фреймворки, которые содержат некоторые файлы заголовков и двоичные файлы. Это оно? Существует ли в инфраструктуре OS X специальные функции, отличные от того, что вы являетесь папкой с заголовками и библиотеками, которые вы связываете с вашим приложением?

Ответы

Ответ 1

Информация о структуре

Из Соединение с разработчиками Apple: определение платформы:

Структура - это пакет (структурированный каталог), который содержит динамическую общую библиотеку вместе с связанными ресурсами, такими как файлы nib, файлы изображений и файлы заголовков. Когда вы разрабатываете приложение, ваш проект привязывается к одной или нескольким фреймворкам. Например, проекты приложений iPhone по умолчанию привязаны к фреймворкам Foundation, UIKit и Core Graphics. Ваш код обращается к возможностям инфраструктуры через интерфейс прикладного программирования (API), который публикуется каркасом через его файлы заголовков. Поскольку библиотека динамически распределена, несколько приложений могут одновременно обращаться к коду инфраструктуры и ресурсам. Система загружает код и ресурсы фреймворка в память по мере необходимости и разделяет одну копию ресурса среди всех приложений.

alt text

Из Руководство по программированию Framework: что такое Frameworks?:

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

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

Связанный вопрос SO

Возможно, вы захотите посмотреть SO вопрос 1444543: Различия между Framework и не-Framework-сборками Python в Mac OS X.

Ответ 2

Это, цитируя "Обзор технологии Mac OS X":

framework Тип пакета, который упаковывает динамическую общую библиотеку с ресурсами, которые требуется библиотеке, включая файлы заголовков и справочную документацию.

Таким образом, ".framework" в основном эквивалент ".app", только для динамической общей библиотеки вместо исполняемого файла.

Ответ 3

В Mac OS X фреймворк представляет собой библиотеку, дополненную версиями, в комплекте. Как вы заметили, некоторые фреймворки довольно просты и содержат только заголовочные файлы и сама библиотека для одной версии. Другие фреймворки могут иметь несколько версий, несколько файлов библиотеки, подкадры (в этом случае родительская структура также называется срединной структурой) и файлы ресурсов, такие как изображения или локализованные строки.

Дополнительная информация доступна в Руководство по программированию платформ.