__IPHONE_OS_VERSION_MIN_REQUIRED 和 __IPHONE_OS_VERSION_MAX_REQUIRED

/__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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容