Obj-C,只有iOS5可用时才有条件运行代码?

时间:2012-03-27 08:13:04

标签: iphone objective-c ios cocoa-touch

如果iOS5可用,我如何检查并有条件地编译/运行代码?

2 个答案:

答案 0 :(得分:5)

您可以像systemVersion那样查看UIDevice的{​​{1}}属性:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0f) {
    // Do something
}

但我个人不喜欢那种方法,因为我不喜欢解析从systemVersion返回的字符串以及那样做的比较。

最好的方法是检查你想要使用的类/方法是否存在。例如:

如果您想使用Twitter框架中的TWRequest

Class twRequestClass = NSClassFromString(@"TWRequest");
if (twRequestClass != nil) {
    // The class exists, so we can use it
} else {
    // The class doesn't exist
}

或者如果您想使用iOS 5.0中引入的startMonitoringForRegion:中的CLLocationManager

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
...
if ([locationManager respondsToSelector:@selector(startMonitoringForRegion:)]) {
    // Yep, it responds
} else {
    // Nope, doesn't respond
}

一般来说,做这样的检查比查看系统版本更好。

答案 1 :(得分:4)

试试这段代码:

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0)
{
     //Do stuff for iOS 5.0
}

希望这会对你有所帮助。