首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查iOS版本

检查iOS版本
EN

Code Review用户
提问于 2016-10-14 21:29:07
回答 1查看 2.1K关注 0票数 4

下面是我想出的一种检查IOS版本的方法。

代码语言:javascript
复制
#define __PROCESS_INFO  ([NSProcessInfo processInfo])
#define CURRENT_IOS     ([__PROCESS_INFO operatingSystemVersion])

#define IOS(x)          ((NSOperatingSystemVersion){[x integerValue], 0, 0})
#define IOS9            ((NSOperatingSystemVersion){9, 0, 0})
#define IOS10           ((NSOperatingSystemVersion){10, 0, 0})
#define IOS11           ((NSOperatingSystemVersion){11, 0, 0})

#define IS_IOS9         ([__PROCESS_INFO isOperatingSystemAtLeastVersion:IOS9] && \
                                ![__PROCESS_INFO isOperatingSystemAtLeastVersion:IOS10])
#define IS_IOS10        ([__PROCESS_INFO isOperatingSystemAtLeastVersion:IOS10] && \
                            ![__PROCESS_INFO isOperatingSystemAtLeastVersion:IOS11])

这样,这种类型的代码更具可读性。

代码语言:javascript
复制
if (IS_IOS9) {
    // [... openURL: ...];
}
else if (IS_IOS10) {
   // [... openURL:options:completionHandler: ...];
}

让我知道你的想法..。

EN

回答 1

Code Review用户

发布于 2016-11-05 16:08:45

如果需要检查某个方法是否存在,还可以通过以下respondsToSelector:检查对象是否支持它:

代码语言:javascript
复制
if ([object respondsToSelector:@selector(openURL:options:completionHandler:)]) {
    [object openURL:...options:...completionHandler:...];
} else {
    [object openURL:...];
}

我认为这种方法比检查操作系统版本更灵活。我见过很多人这么做。

这类似于JavaScript程序员如何检查某些JS特性的存在:如果他们转而检查浏览器版本,代码将无法维护,因为有很多浏览器,并且他们不断地进化。

票数 8
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/144255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档