我有一个自定义框架,遵循 Apple 框架编程指南中的建议 >>安装你的框架我安装在/Library/Frameworks 中。我通过使用以下脚本添加运行脚本构建阶段来实现此目的:
cp -R build/Debug/MyFramework.framework /Library/Frameworks
然后,在我的项目中,我链接到 /Library/Frameworks/MyFramework 并将其导入到我的类中,如下所示:
#import <MyFramework/MyFramework.h>
这非常有效,除了我总是在调试器控制台中看到以下消息:
将程序加载到调试器中...
共享库应用加载规则全部
警告:无法读取“/Users/elisevanlooij/Library/Frameworks/MyFramework.framework/Versions/A/MyFramework”的符号(未找到文件)。
警告:无法从“MyFramework”读取符号(尚未映射到内存中)。
程序已加载。
显然,编译器首先查看 /Users/elisevanlooij/Library/Frameworks,找不到 MyFramework,然后查看 /Library/Frameworks,找到 MyFramework 并继续其快乐的方式。到目前为止,这更像是一个烦恼,而不是一个真正的问题,但是当运行单元测试时,gdb 在(找不到文件)处停止并拒绝继续。我通过在运行脚本阶段添加额外的一行解决了这个问题
cp -R build/Debug/MyFramework.framework ~/Library/Frameworks
但感觉就像用胶带粘住了一些本来就不应该被破坏的东西。我怎样才能解决这个问题?
在过去的几个月里,我学到了很多关于框架的知识,所以我正在重写这个答案。请注意我说的是安装框架作为开发工作流程的一部分.
安装公共框架(即将由多个应用程序或捆绑包使用的框架)的首选位置是 /Library/Frameworks[链接文本] 因为“此位置中的框架是编译器在编译时自动发现的”以及运行时的动态链接器。”[框架编程指南]。最优雅的方法是在构建设置的部署部分。
当您处理框架时,有时您确实希望在构建时更新框架,有时则不想。因此,我仅在发布配置中更改部署设置。所以:
- 双击框架目标以打开“目标信息”窗口并切换到“构建”选项卡。
- 在“配置”选择框中选择“发布”。
- 向下滚动到部署部分并输入以下值:
部署位置 = 是(单击复选框)
安装构建产品位置 = /
安装目录=/Library/Frameworks
安装构建产品位置充当安装的根目录。它的默认值是某个 /tmp 目录:如果您不将其更改为系统根目录,您将永远不会看到已安装的框架,因为它隐藏在 /tmp 中。
现在,您可以在调试配置中按照您喜欢的方式处理框架,而不会影响其他项目,当您准备好发布时,您需要做的就是切换到发布并进行构建。
Xcode 4 警告自从切换到 Xcode 4 以来,我的自定义框架遇到了许多问题。大多数情况下,它们在 GDB 中链接警告,这些警告不会真正干扰框架的实用性,除非运行内置单元测试时。我一周前已经向Apple提交了技术支持票,他们仍在调查中。当我得到一个可行的解决方案时,我会更新这个答案,因为这个问题已经证明非常受欢迎(1 kViews 和计数)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)