ld:iOS 4.3上的重复符号_objc_retainedObject,但不在iOS 5.0上

一些背景 – 我已经在 http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/建立了一个使用Diney的指南的自定义框架

它是为armv6 / armv7构建的,它是一个基于ARC的框架,编译时具有4.3的depolyment目标.

当我将结果框架放在一个5.0项目中,它工作得很好,但是当我把它放在4.3项目(ARC或非arc,不重要)时,我得到以下我不能真正理解…

我也试过手动添加libarclite.a,但没有改变任何东西.

ld: duplicate symbol _objc_retainedObject in /Users/freak4pc/Project/MyFramework.framework/MyFramework and /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/arc/libarclite_iphoneos.a(arclite.o) for architecture armv7
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1

感谢任何帮助. ThanksShai

解决方法

我正在努力解决同样的问题.解决方法是将您的框架的部署目标设置为iOS5(检查是否不会导致其他问题).

那么你必须在主程序中使用ARC来定位iOS4,否则将丢失libarclite.我的解决方案将是提供两个框架,这取决于它们是否使用ARC.

这里有两个链接到苹果的开发论坛,一点点更多的信息:
https://devforums.apple.com/message/539344#539344

https://devforums.apple.com/message/588316#588316

更新:
有一个更好的办法.只需使用iOS5最低目标创建静态库,并手动添加/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/arc/libarclite_iphoneos.a(和/Developer/usr/lib/arc/libarclite_iphonesimulator.a),如果您的项目没有使用ARC,需要iOS4支持.

更新2:实际上,只需使用链接器标志-fobjc-arc;这将链接libarclite与库,如果它还没有在那里.最佳解决方案

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...