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 }