swift - 在运行时以编程方式检测 Mac 应用程序中的 Apple Silicon 与 Intel CPU

标签 swift objective-c macos apple-silicon

在 Mac 应用程序中,我如何以编程方式检测(在运行时)该应用程序当前是否在配备 Intel 或 Apple Silicon 处理器的 Mac 上运行?

最佳答案

在 Objective-C 中,您可以使用系统 uname 函数。这等同于 shell 中的 uname -m

#include <sys/utsname.h>

NSString *GetMachineHardwareName(void) {
    struct utsname sysinfo;
    int retVal = uname(&sysinfo);
    if (EXIT_SUCCESS != retVal) return nil;
    
    return [NSString stringWithUTF8String:sysinfo.machine];
}

或者在 Swift 中

func GetMachineHardwareName() -> String? {
    var sysInfo = utsname()
    let retVal = uname(&sysInfo)

    guard retVal == EXIT_SUCCESS else { return nil }

    return String(cString: &sysInfo.machine.0, encoding: .utf8)
}

对于最新型号的 Intel Mac,这将返回 x86_64。对于 Apple Silicon,它返回 arm64

关于swift - 在运行时以编程方式检测 Mac 应用程序中的 Apple Silicon 与 Intel CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69624731/

相关文章:

swift - Easy SpriteKit 接触检测(太空射击游戏)无法正常工作

objective-c - 尝试使用 objective-c 中的 youtube api 获取 channelId 时出现异常

iphone - 从推送打开我的应用程序时执行哪个回调

python - MacOS 上的 pyqt5 默认 native 菜单文本

objective-c - 如何在 Mail.app (Mac) 上创建邮件中间包含图像资源的邮件

ios - Telnet 得到空输出并且没有登录名/密码

ios - datePicker 未显示在所需位置

ios - UILabel 最小字体大小阴影问题

excel - excel 2010 刷新 BackgroundQuery 运行时错误 1004

ios - 存储的数据在 TableView 中无法显示,在核心数据的一对多关系中?