You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS Sequoia下[NSProcessInfo processInfo]获取版本异常问题

问题原因解析

出现这种差异的核心原因是苹果macOS的系统版本兼容性伪装机制——它会根据运行代码的宿主应用的部署配置返回不同的版本号,具体细节如下:

  • 部署目标(Deployment Target)的影响
    SketchUp 2020在编译时,其设置的最低系统版本(LSMinimumSystemVersion)大概率低于macOS 15.0(Sequoia),可能是10.16或更早版本。macOS为了避免旧应用因新系统API变化崩溃,会对这类部署目标低于当前系统大版本的应用,返回其部署目标对应的最高兼容版本号,而非真实系统版本。这就是SketchUp 2020中调用operatingSystemVersion返回10.16的原因。

  • SketchUp 2024的配置差异
    SketchUp 2024的编译配置使用了更新的SDK,且最低系统版本设置支持到macOS 15.0,匹配当前系统版本范围。此时系统不会触发版本伪装,会返回真实的15.0版本号。

  • 验证方式
    你可以查看两个SketchUp版本的Info.plist文件,找到LSMinimumSystemVersion键,对比两者的版本值,就能直接确认这个差异的根源。

如果你的插件需要获取不受宿主应用影响的真实系统版本,可以使用更底层的系统调用,比如通过sysctlbyname读取kern.osproductversion:

#include <sys/sysctl.h>

NSString *getRealOSVersion() {
    size_t size = 0;
    sysctlbyname("kern.osproductversion", NULL, &size, NULL, 0);
    char *version = malloc(size);
    sysctlbyname("kern.osproductversion", version, &size, NULL, 0);
    NSString *versionStr = [NSString stringWithUTF8String:version];
    free(version);
    return versionStr;
}

内容的提问来源于stack exchange,提问作者Elektraglide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 01:03:09