【问题标题】:What exactly is a Framework in Mac OS X? ( *.framework folders )Mac OS X 中的框架到底是什么? ( *.framework 文件夹)
【发布时间】:2011-06-04 19:39:06
【问题描述】:

好的,我基本上知道现实生活中的框架是什么。我见过一些包含一些头文件和二进制文件的框架。是这样吗? OS X 框架除了作为一个包含您链接到应用程序的标头和库的文件夹之外,是否还有其他特殊功能?

【问题讨论】:

    标签: macos frameworks


    【解决方案1】:

    正是,引用“Mac OS X 技术概述”:

    框架 一种捆绑包,将动态共享库与库所需的资源(包括头文件和参考文档)打包在一起。

    所以“.framework”基本上相当于“.app”,只是用于动态共享库而不是可执行文件。

    【讨论】:

      【解决方案2】:

      框架信息

      来自Apple Developer Connection: Framework Definition

      框架是一个包(结构化目录),其中包含动态共享库以及相关资源,例如 nib 文件、图像文件和头文件。当您开发应用程序时,您的项目会链接到一个或多个框架。例如,iPhone 应用程序项目默认链接到 Foundation、UIKit 和 Core Graphics 框架。您的代码通过框架通过其头文件发布的应用程序编程接口 (API) 访问框架的功能。由于库是动态共享的,因此多个应用程序可以同时访问框架代码和资源。系统根据需要将框架的代码和资源加载到内存中,并在所有应用程序之间共享资源的一个副本。

      来自Framework Programming Guide: What are Frameworks?

      与静态链接库和其他类型的动态共享库相比,框架具有以下优势:

      • 框架组相关但独立的资源在一起。这种分组使安装、卸载和定位这些资源变得更加容易。
      • 框架可以包含比库更广泛的资源类型。例如,一个框架可以包含任何相关的头文件和文档。 一个框架的多个版本可以包含在同一个包中。这使得向后兼容旧程序成为可能。
      • 无论有多少进程在使用这些资源,在任何给定时间,只有一个框架只读资源的副本物理驻留在内存中。这种资源共享减少了系统的内存占用并有助于提高性能。

      相关的 SO 问题

      你可能想看看SO question 1444543: Differences between Framework and non-Framework builds of Python on Mac OS X

      【讨论】:

        【解决方案3】:

        在 Mac OS X 上,框架是一个版本化的捆绑库。正如您所注意到的,一些框架非常简单,并且仅包含单个版本的头文件和库本身。其他框架可以有多个版本、多个库文件、子框架(在这种情况下,父框架也称为伞形框架)和资源文件,例如图像或本地化字符串。

        更多信息请访问Framework Programming Guide

        【讨论】:

          猜你喜欢
          • 2011-09-28
          • 2017-10-10
          • 1970-01-01
          • 2012-12-26
          • 2012-04-21
          • 2011-07-18
          • 2012-08-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多