如何在守护程序中的引导期间获取OSX版本

时间:2014-11-12 06:25:34

标签: objective-c cocoa osx-mountain-lion osx-yosemite

由于Gestalt在10.10中已弃用,因此我使用Apple Script确定OSX版本,实现如下:

NSAppleScript *script = [[NSAppleScript alloc] initWithSource:@"set os_version to do shell script \"sw_vers -productVersion\""];

但是这个苹果脚本在启动时失败并且守护进程崩溃。我无法使用NSProcessInfo operatingSystemVersion因为我正在使用 OSX SDK 10.8 ,现在我不想将我的代码升级到 Xcode 6 。我也不能使用operatingSystemVersionString因为根据Apple Docs - 解析是不安全的。

有人可以告诉我如何在启动时使用 OSX SDK 10.8 10.10上获取OSX版本。

我们可以通过NSTask实现吗?

1 个答案:

答案 0 :(得分:0)

文档说:

NewGestalt()    DEPRECATED 

<强>推荐使用:      请尽可能使用NewGestaltValue。

要点:      为Gestalt已经识别的那些添加选择器代码。

讨论:      NewGestalt函数注册指定的选择器代码      格式塔管理器,以便在调用格式塔功能时      使用该选择器代码,指定的选择器函数是      执行。在调用NewGestalt之前,您必须定义一个选择器      函数回调。有关说明,请参阅SelectorFunctionProcPtr      如何定义选择器功能。

注册格式塔管理器是一种软件方式      作为系统扩展,使他们的存在已知潜力      用户的服务。

在Mac OS X中,选择器和替换值在a上      每个上下文的基础。这意味着它们只适用于      应用程序或安装它们的其他代码。你不能用这个      功能,使信息可用于另一个过程。

使用NewGestalt()注册的Gestalt选择器不能      删除。