Iphone 在iOS 4上运行iOS 5应用程序有困难

Iphone 在iOS 4上运行iOS 5应用程序有困难,iphone,ios,deployment,automatic-ref-counting,Iphone,Ios,Deployment,Automatic Ref Counting,我有一个iPhone应用程序,部署目标是4.0和基本sdk 5.0。该应用程序在iOS 5模拟器上运行良好,但当我统计4.3模拟器时,该应用程序会崩溃,我得到以下结果: dyld:惰性符号绑定失败:找不到符号: _objc_retainAutoreleasedReturnValue引用自:/Users/joakim/Library/Application Support/iPhone 模拟器/4.3.2/Applications/F6CE76EA-DA7E-4BAC-A3AC-3CE2B51C0

我有一个iPhone应用程序,部署目标是4.0和基本sdk 5.0。该应用程序在iOS 5模拟器上运行良好,但当我统计4.3模拟器时,该应用程序会崩溃,我得到以下结果:

dyld:惰性符号绑定失败:找不到符号: _objc_retainAutoreleasedReturnValue引用自:/Users/joakim/Library/Application Support/iPhone 模拟器/4.3.2/Applications/F6CE76EA-DA7E-4BAC-A3AC-3CE2B51C0CD9/PingPalARC.app/PingPalARC 预计在: /开发者/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

dyld:未找到符号:_objc_retainAutoreleasedReturnValue
引用自:/Users/joakim/Library/Application Support/iPhone 模拟器/4.3.2/Applications/F6CE76EA-DA7E-4BAC-A3AC-3CE2B51C0CD9/PingPalARC.app/PingPalARC 预计在: /开发者/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

sharedlibrary应用所有加载规则(gdb)

默认情况下,该项目不使用ARC,但是有几个类用于with,我在编译源代码下使用-fobjc ARC标志打开了ARC

我不使用任何弱引用,也不使用故事板,所以我不明白为什么我的应用程序不能在iOS 4.x上运行。谁能告诉我,为了让我的应用程序在iOS 4和iOS 5上运行,我错过了什么

新增框架: 系统配置 地图套件 网络
核心位置

并不是一个真正的答案,而是一些更多的信息,以防它能帮助比我更有知识的人

objc\u retainAutoreleasedReturnValue(obj)
是iOS 5的新功能,它的功能与名字所说的差不多。从概念上讲,如果指定的对象在自动释放池中,那么它将从自动释放池中取出,隐式地保留它,并在稍后添加合适的释放。因此,这是一种避免当概念上的临时对象堆积在自动释放池中时可能出现的内存瓶颈问题的方法。因此,这是一种优化,而不是一种新的行为

ARC编译器会将其插入到某个ARC文件中,其中某个方法会接收自动释放的对象。正如您所说,它与弱引用和故事板无关,从逻辑上讲,为了保持iOS 4的兼容性,您根本无法做到这一点


话虽如此,除了显而易见但可能很难接受的方法之外,我并不完全相信有一种解决方法——修改ARC类,使它们永远不会接收自动释放的对象或完全关闭ARC。苹果不允许部署动态链接库,因此我想不出一个安全的方法来为iOS 4设备提供一个替代的
objc\u retainuredreturnvalue

您使用的是ARC,它不是iOS 4内置的。您是否将部署目标设置为4,以便为您提供arclite库


(啊,听起来像是这样,但你没有告诉IDE你正在使用ARC。所以你必须自己包含它。)

在函数的autoreleasepool块中添加所有临时变量声明。

嗯,我担心我必须重写代码。谢谢你的帮助嗯,我明天会去看看,然后回来告诉你它是怎么回事: