【问题标题】:Reference code in a separate project in XCode 4.2XCode 4.2 中单独项目中的参考代码
【发布时间】:2012-01-10 15:05:49
【问题描述】:

我正在开发一个使用第三方库的 iOS 应用程序。我想迁移我的项目以使用 ARC,但第三方库仍在使用旧的内存管理。所以我想分离第三方代码并将其放在没有 ARC 的单独项目中,然后以某种方式将该项目链接到我的 iOS 应用程序项目中,以便使用相同的配置将它们构建在一起。

这是否可以通过一种非常简单的方式来完成,或者我是否最好只为单个文件关闭 ARC? (看起来很乏味..)

我可以使用工作区吗?其中一个项目是我的 iOS 应用程序,而另一个项目只包含第三方代码?

我玩了一些,也搜索了很多,但似乎没有任何简单的灵魂,还是我错了?

【问题讨论】:

  • 你试过编译成静态库吗?或者这对于您的项目设置是不可能的?
  • 我不知道。我是 XCode 的新手,来自 VS 的工作背景。我可以创建一个独立于目标(设备、模拟器)的静态库吗?还是我必须为不同的目标和版本的 iOS 构建不同的库?可以自动化吗?我试图创建一个静态可可触摸库,但并没有真正成功地将它导入到我的主项目中。猜猜它不仅仅是拖放。

标签: ios xcode xcode4 automatic-ref-counting


【解决方案1】:

所以我自己想通了,在不同博客的帮助下。这个基本的东西应该更琐碎且有据可查......但是我们开始吧,这就是我为 AsiHttpRequest 获取库所做的:

  1. 创建一个新的 iOS 项目。选择“Cocoa Touch 静态库”模板。随便叫什么。您不想勾选“使用自动引用计数”,因为 AsiHttpRequest 不支持它。
  2. 为您的图书馆项目选择一个位置(稍后会很重要)。
  3. 删除 Xcode 创建的默认 .h 和 .m 文件。
  4. 将 AsiHttpRequest 文件拖放到项目中
  5. 您可以添加 AsiHttpRequest 所依赖的框架,但无论如何您都必须将它们添加到您的主项目中,因此没有必要。
  6. 尝试构建项目,它应该没有错误。
  7. 打开您的主项目
  8. 从 finder 中,将您的库 .proj 文件拖到您的主项目中(在 Xcode 中,以便它“着陆”到主项目文件中)
  9. 库项目现在应该出现在您的主项目下(仍在 XCode 中)。它应该是可扩展的,您也应该能够看到库项目文件。如果没有,请尝试关闭所有打开的项目并重新打开主项目。
  10. 选择主项目,然后选择目标。在 Build Phases - Link Binary With Libraries 下,单击 + 号。
  11. 在框架列表中,您应该会看到您的库项目(称为 libname.a 之类的名称)。选择该文件
  12. 新添加的文件可能会在框架列表中显示为红色,不用担心,它仍然有效。猜猜这是一个错误。
  13. 仍在目标下,转到构建设置
  14. 在标题搜索路径下,将相对搜索路径添加到库 .h 文件所在的位置。这与您的主要项目 .proj 文件有关。 (例如 ../某个文件夹/libproject/)
  15. 希望您的主项目构建时不会出错,并且库项目将同时构建,使用与主项目相同的配置。

我不知道这是否是一个好方法,或者是否有一些更简单的方法来做到这一点。但是,我喜欢这样,因为我可以在多个项目中使用库项目。如果我想更新库项目,我只需要在一个地方进行,其他项目也会更新,因为它们都引用了同一个项目。

编辑1: 我在使用目标 c 类别的库项目中遇到了一些问题。在尝试调用这些方法时,我在运行时收到 unrecognized selector sent to instance 错误。按照here给出的答案解决了这个问题。

  1. 转到主项目中目标的构建设置,并将 -ObjC 添加到名为 Other Linker Flags 的条目中

编辑2: 我找到了this 用于创建通用框架的模板。我还没有尝试过,但我想这样的东西也可以。

【讨论】:

  • Joel,我完全按照您在此处提到的操作,我在第 14 点遇到了问题,即添加标题路径。你能详细说明一下吗?可以在这里看看我的问题:stackoverflow.com/questions/19852910/…
猜你喜欢
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 2012-10-09
  • 2012-03-02
相关资源
最近更新 更多