我在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。 我怎么能这样做?
答案 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];
}