可能重复:
检查iPhone iOS版本
我试过这段代码:
#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_2_2)
    NSLog(@"iPhone 4.2");
#endif
但是当我在模拟器4.1上再次运行它时,我仍然在控制台中获得日志"iPhone 4.2".
谢谢你的帮助.
董道
Mos*_*ieb 27
您应该完全避免询问系统版本.
更好的设计会询问特定功能.
例如:if (NSClassFromString(@"UIPrintInfo"))会告诉您当前设备是否支持4.2或更高版本的打印API.
这样,您可以计划代码以使用功能(如果可用),而不是基于操作系统版本.
Bou*_*rne 21
float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
或者,甚至更好:
CGFloat systemVersion = [[[ UIDevice currentDevice ] systemVersion ] floatValue ];
然后,您可以进行简单的相等检查,例如
if( systemVersion > 4.1 ){...}
您可以在编译时或运行时执行此操作.
对于编译时,您使用所谓的可用性宏:
#if __IPHONE_OS_VERSION_MAX_ALLOWED > 40000 // __IPHONE_4_0
    NSLog( @"After Version 4.0" ); 
#else
    NSLog( @"Version 4.0 or earlier" ); 
#endif
但是,编译时的问题是您必须维护多个二进制文件.如果您希望此二进制文件在4.x之前运行,那么您应该弱链接到iOS库.
if(kCFCoreFoundationVersionNumber > kCFCoreFoundationVersionNumber_iPhoneOS_4_0)
{
    NSLog( @"After Version 4.0" ); 
}
else
{
    NSLog( @"Version 4.0 or earlier" ); 
}
这里有一个很好的教程:http: //cocoawithlove.com/2010/07/tips-tricks-for-conditional-ios3-ios32.html
| 归档时间: | 
 | 
| 查看次数: | 13140 次 | 
| 最近记录: |