使用NSUbiquitousKeyValueStore类为xCode 3.2.5和xCode 4.3.2构建xCode项目

时间:2012-04-18 07:05:41

标签: iphone xcode nsubiquitouskeyvaluestore

我在xCode 4.3.2上有我的iPhone项目,效果很好。它使用NSUbiquitousKeyValueStore类,它的基础SDK是iOS 5.0。 现在我要在xCode 3.2.5上构建我的项目,它说错误“Undefined symbol NSUbiquitousKeyValueStore”。 当然,我知道iOS 5.0支持NSUbiquitousKeyValueStore类,而xCode 3.2.5不支持iOS 5.0。 所以我想禁用iOS 5.0以上的这些功能,并启用iOS 5.0。 我怎么能这样做?

2 个答案:

答案 0 :(得分: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 Compatibility Guide

答案 1 :(得分:0)

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

if ([NSUbiquitousKeyValueStore class]) {
    // Class wil return non nil uf the class exists.
   NSUbiquitousKeyValueStore *NSUbiquitousKeyValueStore = [NSUbiquitousKeyValueStore new];
}