如何在不包含所需框架的情况下构建框架?

时间:2010-12-11 01:06:27

标签: objective-c cocoa frameworks

此问题基于this

TL; DR:我正在将我的代码分解为框架并创建了一个元框架,其中包含将在我的所有框架中使用的代码(主要是常量和字符串)。

现在,我需要构建框架,但我不想在每个框架上包含元框架,因为这会导致不必要的代码膨胀。如何让我的框架了解元框架,以便我可以快速测试它们?不要忘记它们都将被包含在最终的应用程序中,因此在我创建的每个框架中包含元框架的副本是没有意义的。

2 个答案:

答案 0 :(得分:2)

只需将您的子框架仅链接添加到您的元框架,不将元架构添加到您的子框架的复制文件构建阶段。<登记/> 这样您最终会得到没有重复的代码或资源

然后,将您的一个子框架包含到app(bundle,无论如何)中,执行以下操作:

  1. 项目目标指向您的子框架元框架
  2. 如果项目尚不存在,请将“复制(框架)文件构建阶段添加到项目中。
  3. 子框架元框架添加到构建阶段
  4. 您可能还希望将项目所依赖的所有项目添加为依赖项。 (对于您的子项目,您的子项目,以及您的子项目的应用程序。)
  5. ...
  6. 利润。
  7. 这基本上就是我在 DLAppKit.framework 中所做的,它依赖于我的 DLFoundationKit.framework 以及所有使用 DLAppKit.framework的应用 EM>

    alt text

答案 1 :(得分:0)

为了这个答案,我将假设你正在使用内置的Xcode目标构建标准的,普通的框架。如果是这种情况,那么您的框架包含动态库,很可能是.dylib文件。任何链接到这种框架的代码都不会在编译时包含来自包含库的代码,它将在运行时加载框架并解析符号。

这样做的结果是你不必担心代码膨胀;链接!如果您的子框架依赖于父框架中定义的符号,那么您需要将它们链接到父框架。在某些情况下,您可以以可怕的方式使用Objective-C元编程来直接包含框架,但如果您主要包含常量和字符串,则可能不会出现这种情况。