/__IPHONE_OS_VERSION_MIN_REQUIRED对应着Xcode deployment target的版本。
i.e. 你设置为7.0 则对应宏常量的值为70000
__IPHONE_OS_VERSION_MAX_REQUIRED对应着Xcode-Architecture-Base SDK
。
i.e. 设置9.3,则对应宏常量的值为90300
这两个宏常量用作用是啥呢?可能想到用于做API的兼容,但往往存在缺陷。
比如,UIAlertViewController, 你可能想到使用__IPHONE_OS_VERSION_MIN_REQUIRED 如果在deployment target设置为8.0以下的场景,将永远使用新的API了。
对于仅仅是判断某个方法是否可以使用,用responseToSelector:方法即可。
如果判断当前Device的iOS版本,可以使用UIDevice类提供的Api进行判断。
比如:
<pre>
-
(BOOL)osVersionAbove:(NSString)aVersion{
BOOL res;
NSString currentVersion = [UIDevice currentDevice].systemVersion;NSComparisonResult cmpRes = [currentVersion compare:aVersion options:NSNumericSearch];
if (cmpRes == NSOrderedSame || cmpRes == NSOrderedDescending) {
res = YES;
}else{
res = NO;
}return res;
}
</pre>