如何确定和比较(>,<等等)运行该应用的iPhone的当前操作系统版本? 3.0中有一个错误,但3.1+中没有,所以如果当前操作系统版本不是> = 3.1,我希望能够跳过一些代码。
这需要在运行时而不是编译时间!
答案 0 :(得分:22)
例如,您可以执行以下操作:
NSString *reqSysVer = @"3.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
{
//Do some clever stuff
}
答案 1 :(得分:13)
您的意思是确定操作系统的版本吗? SDK在构建时修复,但操作系统可能会更改。要获取操作系统版本,请使用[UIDevice currentDevice]。 systemVersion。要获得SDK版本,我认为您可以使用__IPHONE_OS_VERSION_MIN_REQUIRED。
答案 2 :(得分:2)
更可靠的方法是做这样的事情:
static inline NSComparisonResult compareCurVersionTo(int major, int minor, int point)
{
NSUInteger testVers = major*10000 + minor*100 + point;
NSUInteger curSysNum = 0;
NSUInteger multi = 10000;
for(NSString *n in [[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."]) {
curSysNum += [n integerValue] * multi;
multi /= 100;
}
if(curSysNum < testVers) return NSOrderedAscending;
if(curSysNum > testVers) return NSOrderedDescending;
return NSOrderedSame;
}
这处理“Leopard”错误,其中次要版本超过“9”。