1

我还没有时间完全进入 iOS 模块和构建,但我需要使用 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

}

感谢您的任何想法...

4

2 回答 2

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

}
于 2012-09-26T15:16:40.280 回答
0

要使代码仅在 abc 及更高版本中可用,请将其包装在运行时版本检查中:

if ([@"a.b.c" compare:UIDevice.currentDevice.systemVersion options:NSNumericSearch] != NSOrderedDescending) {
    // only available in a.b.c. and after
}

但是,通常最好不要对操作系统版本(或设备类型)做出任何假设,而是明确检查要存在的功能。Indeed 用于NSClassFromString(..)查看课程是否可用。用于[object respondsToSelector:]查看对象是否支持某种方法。

于 2012-09-26T16:14:54.353 回答