如何添加以下额外的链接器标志?

时间:2010-10-28 07:05:55

标签: iphone objective-c cocoa-touch xcode linker

To support OS 3.x, please set Base SDK to iPhone Device 4.0 and iPhone OS Deployment Target to iPhone OS 3.x. Extra linker flags may be needed if NSConcreteGlobalBlock and UIBackgroundTaskInvalid runtime error occur under 3.x.
The linker flags are:
-weak_framework UIKit
-weak_library /usr/lib/libSystem.B.dylib

编辑: 我仍然得到相同的构建错误,即使在链接后:cl.ly/c69ca3f8a336d7e41256

3 个答案:

答案 0 :(得分:2)

  • 在Xcode中双击您的目标或应用程序以打开信息窗口

  • 切换到“构建”标签

  • 将“-weak_framework UIKit -weak_library /usr/lib/libSystem.B.dylib”添加到“其他链接器标志”(在“链接”下)

答案 1 :(得分:1)

不确定导致构建问题的原因。但是NSConcreteGlobalBlock和UIBackgroundTaskInvalid让我觉得你在使用后台处理的应用程序中遇到问题,但仍然需要在3.x上运行。

就我个人而言,我从未见过这些问题,而且我绝对不会弱连接UIKit或libSystem。即使在3.x上完全正常工作且支持块和背景音频等4.0功能的应用中,我也不需要建议的修复。

实现此目的的一般规则:不要在可能在3.x上执行的代码中使用块。因此,只需在 - (void)applicationDidEnterBackground:(UIApplication *)应用程序中启动后台处理。此委托方法在3.x协议中不存在,因此不会被调用。如果你在3.x上调用的方法中使用块,它将导致崩溃。

答案 2 :(得分:1)

您可能已经完成了此操作,但是您是否在构建设置中将 iOS部署目标切换为3.2并将 Base SDK 切换为4.x?如果你已经设置了这两个并添加了链接器标志,那么我无法解释为什么会出现构建错误。