【发布时间】:2021-12-06 00:28:56
【问题描述】:
在 Mac 应用中,我如何以编程方式(在运行时)检测应用当前是否在配备 Intel 或 Apple Silicon 处理器的 Mac 上运行?
【问题讨论】:
-
目标 C 还是 Swift?你标记了两者。
-
编译时可以检测到
标签: swift objective-c macos apple-silicon
在 Mac 应用中,我如何以编程方式(在运行时)检测应用当前是否在配备 Intel 或 Apple Silicon 处理器的 Mac 上运行?
【问题讨论】:
标签: swift objective-c macos apple-silicon
在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)
}
对于最新型号的英特尔 Mac,这将返回 x86_64。对于 Apple Silicon,它返回 arm64。
【讨论】: