在OS3.x上运行时,IPhone OS4功能链接错误

use*_*743 3 iphone

我已经在iPhone OS 3.0上使用IPhone base SDK 4.0编译了一个应用程序.此应用程序包含OS 4.0新功能:本地通知.

它适用于OS 2的iPod 2G; 然而,每次应用程序启动iPhone 1G OS 3.0时它都会崩溃.它似乎是运行时引用错误:

"使dyld:找不到符号:_OBJC_CLASS _ $ _ UILocalNotification引用自:在/ var /移动/应用/ 73A3FAB1-63AE-4A71-8C6B-932142A728FE/Tapatalk X.app/Tapatalk X预期在:/System/Library/Frameworks/UIKit.framework/UIKit的"

如果UIKit框架SDK3.0和SDK4.0之间是不同的,它为什么不同时编制报告?如何在此应用程序上应用本地通知功能,而应用程序仍可在运行OS3.0的设备上运行?谢谢.

jam*_*esh 8

这个答案为我解决了这个问题:

由于您没有弱连接UIKit框架,因此触发了该错误.iPhone OS 3.2中的UIKit框架添加了UISplitViewController,如果你正常链接它,你的应用程序将假设这些符号存在于3.0,而不是.

要弱化链接框架,请在Xcode中找到您的应用程序目标,检查它,然后转到"常规"选项卡.该选项卡的底部应该是框架列表,其中包含Type列.将UIKit的类型从Required更改为Weak并重建您的应用程序.这应该处理运行时错误.

这对我来说似乎是安全的,因为UIKit总是会出现在我们正在瞄准的设备上.

  • 谢谢你的解决方案!顺便说一句,在XCode4中,您可以通过单击顶级项目文件夹,然后单击"构建阶段"选项卡来执行此操作.然后打开"Link Binary With Libraries"部分.然后将UIKit.framework的设置从"Required"更改为"Optional" (2认同)