我还没有时间完全进入iOS mods和构建,但我需要使用iOS 5.1和4.4 SDK进行另一次更新。我想在iOS上为人们更改一个显示的按钮。不确定这是否有效。我基本上是向前而不是向后使用NSClassFromString检查。这个构建是特定的还是仅仅基于构建的SDK版本?我只想查看iOS版本以了解要显示的内容以及屏幕上的位置。纯粹的旧学校功能,iOS6没什么新功能,但我正在使用5.1构建并定位到3.0(仍然)。
if (NSClassFromString(@"UICollectionView")) {
// Here is old code to show a simple button
// that only shows differently for iOS6
} else { // same old button that will work as before on older devices
}
感谢您的任何想法......
答案 0 :(得分:0)
为什么不直接询问ios版本?
NSString *version = [[UIDevice currentDevice] systemVersion];
if ([version hasPrefix:@"6"]) {
// Here is old code to show a simple button
// that only shows differently for iOS6
} else { // same old button that will work as before on older devices
}
编辑:
未来的iOS版安全代码(是的,不是很漂亮):
NSInteger major = 0;
NSString *version = [[UIDevice currentDevice] systemVersion];
NSRange seperator = [version rangeOfString:@"."];
if (seperator.location != NSNotFound)
major = [[version subStringToIndex:range.location] integerValue];
else
major = [version integerValue];
if (major >= 6) {
// Here is old code to show a simple button
// that only shows differently for iOS6
} else { // same old button that will work as before on older devices
}
答案 1 :(得分:0)
要使代码仅在a.b.c版本中可用,之后将其包装在运行时版本检查中:
if ([@"a.b.c" compare:UIDevice.currentDevice.systemVersion options:NSNumericSearch] != NSOrderedDescending) {
// only available in a.b.c. and after
}
但是,通常最好不对OS版本(或设备类型)做出任何假设,而是明确检查要存在的功能。确实使用NSClassFromString(..)
来查看某个类是否可用。使用[object respondsToSelector:]
查看对象是否支持某种方法。