ifdef __IPHONE_11_0
__IPHONE_OS_VERSION_MIN_REQUIRED
這個宏的取值也就是 __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
這個值,也就是你的工程支持的最低系統版本。可是最少是 __IPHONE_2_0。ios
_IPHONE_OS_VERSION_MAX_ALLOWED
這個宏的值等於當前 SDK 定義的最高版本,好比 __IPHONE_11_3ide
@available(iOS 11.0, *)
NSFoundationVersionNumber (NSFoundationVersionNumber_iOS_9_x_Max) kCFCoreFoundationVersionNumber (kCFCoreFoundationVersionNumber_iOS_9_x_Max)
之前能夠經過這兩個常量來判斷系統,可是10.0之後定義的數值系統並無開放出來。ui
if (NSFoundationVersionNumber > floor(NSFoundationVersionNumber_iOS_9_x_Max)) { // > iOS 10.0 } else { // <= iOS 10.0 }
NSString *sysVersion = [UIDevice currentDevice].systemVersion if ([sysVersion compare:@"10.0.3" options:NSNumericSearch] == NSOrderedAscending) { // > 10.0.3 }
iOS 8.0 SDK 引入的方法code
if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){.majorVersion = 8, .minorVersion = 3, .patchVersion = 0}]) { // >= iOS 8.3 } else { // < iOS 8.3 }