为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕虎7371278 2019-12-11 14:09:07
从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);}
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

在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开始有效。



查看完整回答
反对 回复 2019-12-12
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

有一个可可API。您可以从类NSProcessInfo获得os X版本字符串。


获取操作系统版本字符串的代码如下。


NSString * operatingSystemVersionString = [[NSProcessInfo processInfo] operatingSystemVersionString];


NSLog(@"operatingSystemVersionString => %@" , operatingSystemVersionString);

// === >>版本10.8.2(内部版本12C2034)结果值


它不被弃用。



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 502 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信