您必须在您的应用逻辑中强制执行此操作(例如,在应用委托中):
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
unsigned kernelMajor, kernelMinor, kernelBugfix;
unsigned osMajor, osMinor, osBugfix;
char osrelease[256];
size_t len = sizeof(osrelease);
sysctlbyname("kern.osrelease", osrelease, &len, NULL, 0);
if (sscanf(osrelease, "%u.%u.%u", &kernelMajor, &kernelMinor, &kernelBugfix) != 3) {
if (sscanf(osrelease, "%u.%u", &kernelMajor, &kernelMinor) != 2) {
// Throw exception here
}
kernelBugfix = 0;
}
// If kernel version = x.y.z
// then OSX version = 10.(x-4).y
osMajor = 10;
osMinor = kernelMajor - 4;
osBugfix = kernelMinor;
if (osMinor >= 9) {
// complain and exit
}
}
(请注意,这种获取操作系统版本的方法在 10.8+ 下受支持,与现已弃用的 Gestalt() 方法不同。