使用另一个项目的资源

时间:2013-01-08 18:13:16

标签: iphone objective-c xcode

使用例

  1. 包含自定义UI控件集合的静态库
  2. 自定义UI的PNG是静态Lib项目的一部分
  3. 另一个可执行项目链接到静态lib以使用它的UI集合

  4. 问题

    似乎IDE不知道〜自动嵌入与静态lib相关联的资源(例如PNG文件)。

    • 有没有办法让这些静态Lib资源嵌入主可执行项目,而不是直接将它们添加到项目中?
    • 有没有办法让IDE自动检测依赖关系并将资源包含在生成的可执行文件中?

    任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

没有任何方法可以通过链接到该库来自动将资源从静态库复制到另一个目标(就像使用框架一样)。

我能找到的最佳解决方法是将库的资源放在以“.bundle”结尾的目录中(例如,MyLibraryResources.bundle)。 Xcode(和Finder)会将此目录视为一个单元。然后,使用该库的目标只需将单个资源(bundle)添加到项目中。它并不完美,但它很容易。

在您的库中,当引用捆绑包中的资源时,您只需执行以下操作:

NSString *pathToSomeImage = [[NSBundle mainBundle] pathForResource:@"MyLibraryResources.bundle/SomeImage.png" ofType:nil];

捆绑包可能有点麻烦,因为Finder以不同于普通目录的方式对待它们。您可以通过在库项目中添加目标来更轻松地处理它们,该目标通过复制资源来组装包。