如何在运行时检查Mac OS X版本 [英] How to check Mac OS X version at runtime

查看:139
本文介绍了如何在运行时检查Mac OS X版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下代码在运行时检查OS X版本.

I am using below code to check OS X version at runtime.

if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_10)
{
    /* On a 10.10.x or earlier system */
}

但是这种情况在10.10.4 OS X上返回false.我正在使用Xcode 6.3.2.

But this condition return false on 10.10.4 OS X. I am using Xcode 6.3.2.

根据适用于OS X v10.11的AppKit发行说明,应该可以.

if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_9) {
  /* On a 10.9.x or earlier system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_10) {
  /* On a 10.10 - 10.10.x system */
} else {
  /* 10.11 or later system */
}

推荐答案

更新:

使用#define NSAppKitVersionNumber10_10_Max 1349

旧:

从10.11 SDK起

From 10.11 SDK

#define NSAppKitVersionNumber10_7_2 1138.23
#define NSAppKitVersionNumber10_7_3 1138.32
#define NSAppKitVersionNumber10_7_4 1138.47
#define NSAppKitVersionNumber10_8 1187
#define NSAppKitVersionNumber10_9 1265
#define NSAppKitVersionNumber10_10 1343
#define NSAppKitVersionNumber10_10_2 1344
#define NSAppKitVersionNumber10_10_3 1347

对于10.10.4其1348.0(来自NSLog输出)

for 10.10.4 Its 1348.0(From NSLog output)

它们将小数部分增加为10.10.x常数.

They increase decimal part for 10.10.x constant.

解决方法是在10.11上使用CFBundleVersion/System/Library/Frameworks/AppKit.framework/Resources/Info.plist.

The workaround is to use CFBundleVersion value /System/Library/Frameworks/AppKit.framework/Resources/Info.plist on 10.11.

if (NSAppKitVersionNumber < 1391.12)
{
    /* On a 10.10.x or earlier system */
}

注意::我的OS X 10.11构建版本是15A244a.如果某人是第一个构建者,请在if条件下更新该值.

NOTE: My OS X 10.11 build version is 15A244a. If someone have first build , Please update the value in if condition.

这篇关于如何在运行时检查Mac OS X版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆