草庐IT

ios - 在 XCode 4.2 的单独项目中引用代码

coder 2024-01-16 原文

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

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

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

我玩了一会儿并用谷歌搜索了很多,但似乎没有任何简单的想法,或者我错了吗?

最佳答案

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

  1. 创建一个新的 iOS 项目。选择“Cocoa Touch Static Library”模板。随便你怎么调用它。您不想勾选“使用自动引用计数”,因为 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. 仍在目标下,转到build设置
  14. 在 header 搜索路径下,将相对搜索路径添加到库 .h 文件所在的位置。这与您的主要项目 .proj 文件有关。 (例如../some folder/libproject/)
  15. 希望您的主项目构建没有错误,库项目将同时构建,使用与主项目相同的配置。

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

编辑1: 我在使用 objective c 类别的库项目中遇到了一些问题。尝试调用这些方法时,我在运行时收到无法识别的选择器发送到实例错误。按照给出的答案解决了这个问题 here .

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

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

关于ios - 在 XCode 4.2 的单独项目中引用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805413/

有关ios - 在 XCode 4.2 的单独项目中引用代码的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  5. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  6. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  7. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  8. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  9. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  10. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

随机推荐