1

我在 xCode 4.3.2 上有我的 iPhone 项目,它运行良好。它使用 NSUbiquitousKeyValueStore 类,它的基础 SDK 是 iOS 5.0。现在我要在 xCode 3.2.5 上构建我的项目,它显示错误“未定义的符号 NSUbiquitousKeyValueStore”。当然,我知道 iOS 5.0 支持 NSUbiquitousKeyValueStore 类,而 xCode 3.2.5 不支持 iOS 5.0。所以我想在 iOS 5.0 之前禁用这些功能,并在 iOS 5.0 上启用。我怎样才能做到这一点?

4

2 回答 2

2

围绕使用 5.0 SDK 引入的功能的代码,如下所示:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000
    // Code using NSUbiquitousKeyValueStore goes here
#endif

请注意,这是条件编译。测试是在构建时执行的,而不是在运行时执行的。因此,如果您在没有 5.0 SDK 的旧版本 Xcode 中构建,那么生成的程序将永远不会使用NSUbiquitousKeyValueStore.,无论您在哪里运行它。没有可行的方法来针对较旧的 SDK 进行构建,但仍使用较新的 SDK 的功能(如果它们在运行时可用)。

编辑添加:有关更多信息,请参阅 Apple 的SDK 兼容性指南

于 2012-04-18T07:40:21.830 回答
0

您需要弱链接包含NSUbiquitousKeyValueStore该类的框架。然后在你的代码中做类似的事情:

if ([NSUbiquitousKeyValueStore class]) {
    // Class wil return non nil uf the class exists.
   NSUbiquitousKeyValueStore *NSUbiquitousKeyValueStore = [NSUbiquitousKeyValueStore new];
}
于 2012-04-18T07:22:51.433 回答