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