我正在开发一个我想在iOS4和iOS5上运行的应用程序但是对于iOS5的用户我想使用iOS5功能作为界面的一部分(iOS4用户将获得不那么令人兴奋的东西)。我的问题是检查设备上特定操作系统的可用性的过程是什么。我的理解是我不检查操作系统版本,而是查看特定课程的可用性,任何人都可以帮助我摆脱最佳方式...
答案 0 :(得分:4)
iOS下的NDA不是吗?
无论如何,要检查某个功能是否存在,请尝试以下操作:
if (NSClassFromString(@"UIStepper")) {
//enter code here
} else {
//enter code here
}
根据您的需求进行定制。
编辑:iOS 5现已发布,所以我现在可以在我的代码中添加“UIStepper”。
答案 1 :(得分:2)
Class stepperClass = NSClassFromString(@"UIStepper");
if (stepperClass) {
// class is available, use it
} else {
// class not available, don't use it or use something else
}
答案 2 :(得分:2)
iOS5属于NDA,因此我不会提及任何可能存在或可能不存在的新类。但是,以下代码应该执行您想要的操作。它取自docs。
if ([UINewClass class]) {
// Create an instance of the class and use it.
} else {
// Alternate code path to follow when the
// class is not available.
}
这使用弱链接,因此要求新类(UINewClass)位于您用于编译的SDK中。它是iOS 4.2中引入的一个相对较新的功能,可能不受所有框架的支持。解决方法是使用旧样式(来自上面的相同链接):
Class cls = NSClassFromString (@"UINewClass");
if (cls) {
// Create an instance of the class and use it.
} else {
// Alternate code path to follow when the
// class is not available.
}
答案 3 :(得分:2)
如果你试图让UIStepper在4.x中正常降级,你不仅可以使用
if( NSClassFromString(@"UIStepper") )
相反,您还必须检查具有响应的UIStepper特定选择器。正如哈利伍德在博A的评论中所说,一个好方法是:
if( NSClassFromString(@"UIStepper") && [theStepper respondsToSelector:@selector(setValue:)] )
这解决了我在iOS 4.x下崩溃的问题。
Harry Wood帮助我解决了我所看到的问题,我希望他能得到这个荣誉。