如何在OS X或iOS(不使用Gestalt)的运行时确定OS版本?

从CarbonCore/OSUtils.hOS X 10.8 Mountain Lion开始不推荐使用位于其中的Gestalt()函数。


我经常使用此功能在运行时测试OS X操作系统的版本(请参见下面的玩具示例)。


在Cocoa应用程序中,还可以使用其他什么API来在运行时检查OS X操作系统版本?


int main() {

    SInt32 versMaj, versMin, versBugFix;

    Gestalt(gestaltSystemVersionMajor, &versMaj);

    Gestalt(gestaltSystemVersionMinor, &versMin);

    Gestalt(gestaltSystemVersionBugFix, &versBugFix);


    printf("OS X Version: %d.%d.%d\n", versMaj, versMin, versBugFix);

}




慕虎7371278
浏览 476回答 3
3回答

千万里不及你

在OS X 10.10(和iOS 8.0)上,您可以使用[[NSProcessInfo processInfo] operatingSystemVersion],它返回一个NSOperatingSystemVersion结构,定义为typedef struct {    NSInteger majorVersion;    NSInteger minorVersion;    NSInteger patchVersion;} NSOperatingSystemVersion;NSProcessInfo中还有一个方法可以为您进行比较:- (BOOL)isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version当心,虽然记载了OS X 10.10可用后来,双方operatingSystemVersion并isOperatingSystemAtLeastVersion:在OS X 10.9(存在可能10.9.2如预期)和工作。这意味着您不得测试是否NSProcessInfo响应这些选择器来检查您是否在OS X 10.9或10.10上运行。在iOS上,这些方法仅从iOS 8.0开始有效。

幕布斯7119047

有一个可可API。您可以从类NSProcessInfo获得os X版本字符串。获取操作系统版本字符串的代码如下。NSString * operatingSystemVersionString = [[NSProcessInfo processInfo] operatingSystemVersionString];NSLog(@"operatingSystemVersionString => %@" , operatingSystemVersionString);// === >>版本10.8.2(内部版本12C2034)结果值它不被弃用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

AngularJS