我正在开发一个使用第三方库的 iOS 应用程序。我想迁移我的项目以使用 ARC,但第三方库仍在使用旧的内存管理。所以我想分离第三方代码并将其放在没有 ARC 的单独项目中,然后以某种方式将该项目链接到我的 iOS 应用程序项目中,以便使用相同的配置将它们构建在一起。
这是否可以通过一种非常简单的方式来实现,或者我是否最好只为单个文件关闭 ARC? (看起来很乏味..)
我可以使用工作区吗?其中一个项目是我的 iOS 应用程序,而另一个项目只包含第三方代码?
我玩过一些游戏并搜索了很多,但似乎没有任何简单的灵魂,还是我错了?
Best Answer-推荐答案 strong>
所以我自己想通了,在不同博客的帮助下。这个基本的东西应该更简单和有据可查......但是我们开始了,这就是我为 AsiHttpRequest 获取库所做的:
- 创建一个新的 iOS 项目。选择“Cocoa Touch 静态库”模板。随便叫什么。您不想勾选“使用自动引用计数”,因为 AsiHttpRequest 不支持它。
- 为您的图书馆项目选择一个位置(稍后会很重要)。
- 删除 Xcode 创建的默认 .h 和 .m 文件。
- 将 AsiHttpRequest 文件拖放到项目中
- 您可以添加 AsiHttpRequest 所依赖的框架,但无论如何您都必须将它们添加到您的主项目中,因此没有必要。
- 尝试构建项目,它应该没有错误。
- 打开您的主项目
- 从 finder 中,将您的库 .proj 文件拖到您的主项目中(在 Xcode 中,以便它“着陆”到主项目文件中)
- 库项目现在应该出现在您的主项目下(仍在 XCode 中)。它应该是可扩展的,您也应该能够看到库项目文件。如果没有,请尝试关闭所有打开的项目并重新打开主项目。
- 选择主项目,然后选择目标。在 Build Phases - Link Binary With Libraries 下,单击 + 号。
- 在框架列表中,您应该会看到您的库项目(名为 libname.a)。选择该文件
- 新添加的文件可能会在框架列表中显示为红色,不用担心,它仍然可以正常工作。猜猜这是一个错误。
- 仍在目标下,转到build设置
- 在标题搜索路径下,将相对搜索路径添加到库 .h 文件所在的位置。这与您的主要项目 .proj 文件有关。 (例如 ../某个文件夹/libproject/)
- 希望您的主项目构建时不会出错,并且库项目将同时构建,使用与主项目相同的配置。
我不知道这是否是一个好方法,或者是否有一些更简单的方法来做到这一点。但是,我喜欢这样,因为我可以在多个项目中使用库项目。如果我想更新库项目,我只需要在一个地方进行,其他项目也会更新,因为它们都引用了同一个项目。
编辑1:
我在使用 objective-c 类别的库项目中遇到了一些问题。在尝试调用这些方法时,我在运行时收到 unrecognized selector sent to instance 错误。这个问题是按照给出的答案解决的 here .
- 转到主项目中目标的build设置,并将 -ObjC 添加到名为 Other Linker Flags 的条目中
编辑2:
我找到了this用于创建通用框架的模板。我还没有尝试过,但我想这样的东西也可以。
关于ios - XCode 4.2 中单独项目中的引用代码,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/8805413/
|