我对此有所了解familiar tutorials,但框架XCode 6模板的引入改变了游戏。
我已经看过关于构建现代框架的WWDC 2014 video,但它更多地讨论了构建扩展,框架和扩展。应用程序内部单个项目。它没有说明我用它制作的框架是否真的可以在任何项目中重复使用。
我正在构建XCode 6方式框架(File-> New Project-> Framework and Library-> Cocoa Touch Framework),但是当我在我的测试应用程序项目中导入它时(与框架项目分开) - 我不断收到各种错误。
示例:在框架内包含非模块化标头,依此类推。
我知道这不是它所说的,而且无论我在做什么,都会有一些缺失的步骤。 older tricks可能适用于所有人,但在XCode 6之后我根本找不到合适的方法。
例如,框架需要some folder structure,但XCode 6在构建时并不符合它。这样对吗?如果没有,我如何更改XCode构建框架文件夹层次结构的方式?
我是否会回到旧学校或者我在XCode 6中搞砸了一些我无法创建可重用框架的小东西?
答案 0 :(得分:2)
我不确定您是否正在尝试使用Objective-C或Swift构建框架,因为您的问题并未说明。我在使用Swift时遇到了错误,因此我将为您提供构建Swift框架的方法。
我发现Objective-C的过程非常简单并且有很好的文档记录,所以我会跳过这个过程。
至于Swift,有几件事需要考虑。首先,不支持Swift静态库,因此在将应用程序链接到库时,您必须专门使用框架(也称为动态库)。
以下是步骤:
使用New>创建框架IOS项目>框架&图书馆,选择Cocoa Touch Framework
要避免找不到选项的" ld:warning:目录..."转到目标的构建设置中的库搜索路径并删除路径。
您无法将Objective-C与Swift混合使用,因此请不要考虑在代码中添加Swift-Header桥接文件。
在swift中有一些情况需要从未公开的框架中导入代码。我已成功使用框架内的模块图来处理这些案例。
我还在构建设置中选择CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES来解决框架模块内的非模块化标头的包含问题。这似乎有效
我确保生成的头文件被标记为Public(而不是Project)。点击该文件,您将在“目标会员资格'
构建时可能会遇到一些奇怪的错误消息。当代码无法正确编译时,Xcode倾向于报告链接器错误,从而导致链接器需要输出其二进制文件的文件丢失。有时XCode不会显示您正在编译的文件中的错误,您需要手动编译构建输出并返回到文件。在其他时候,您将遇到需要删除缓存的问题。这些问题我称之为XCode蓝调并不断处理它。我发现在构建库时更常出现这种类型的问题。其余的应该按预期工作。