格式塔选择器gestaltSystemVersion返回10.9.2而不是10.10.2

时间:2015-03-19 08:51:57

标签: xcode macos

在MAC中开发应用程序时。其中我显示太多弹出窗口通知系统内部信息,如CPU使用率,系统设置。我正在使用NSalert显示弹出窗口并从后台线程获取显示信息。我的应用程序在10.8.X版本中正常运行。但是当涉及到yesomite时,它会被一个空的弹出窗口崩溃,然后应用程序挂起。当我在控制台深入挖掘时,我发现了这个日志。这是否相关,如果是这样,请有人回答我,让选择器返回正确的版本

2 个答案:

答案 0 :(得分:2)

尚不清楚什么系统和&您正在使用的编译器,或者您找到的日志。

Gestalt的文档指出次要版本号码为9 - 它毕竟是一个BCD数字。

编译:

SInt32 number;
if (Gestalt(gestaltSystemVersion, &number) != noErr)
    number = 0;
NSLog(@"version = %8x", number);
使用Xcode 6.1的Yosemite上的

产生警告:

  

gestaltSystemVersion'不推荐使用:首先在OS X 10.8中弃用 - 改为使用NSProcessInfo的operatingSystemVersion属性。

您可以使用operatingSystemVersionrespondsToSelector:进行测试,并在Gestalt可用时优先使用{{1}}。

HTH

答案 1 :(得分:1)

CRD的答案没有任何问题,但为了完整起见,另一种方法是使用Gestalt分别使用gestaltSystemVersionMajorgestaltSystemVersionMinor获取版本的3个部分}和gestaltSystemVersionBugFix