我有一个程序需要在Tiger上的行为略有不同于Leopard.有没有人知道系统调用,这将允许我准确地确定正在运行的Mac OS XI版本.我已经找到了许多宏定义来确定构建机器的操作系统,但是没有什么能够确定正在运行的机器的操作系统.
谢谢,乔
在这里看到这篇文章
但简而言之,如果您使用的是碳,请使用Gestalt()调用,如果您使用的是Cocoa,则会有一个名为NSAppKitVersionNumber的常量,您只需检查它即可.
编辑:对于Mac OSX 10.8及更高版本,请不要再使用Gestalt().有关更多详细信息,请参阅此答案:如何在OS X或iOS(不使用Gestalt)中确定运行时的操作系统版本?
你能检查一下能力的存在吗?例如:
if (NSClassFromString(@"NSKeyedArchiver") != Nil)
要么
if ([arrayController respondsToSelector: @selector(selectedIndexes)])
然后你知道操作系统做你需要它做的事情,而不是Apple的产品营销组给它一个特定的数字;-)
API通过格式塔管理器.
请参阅CocoaDev站点中的" 确定操作系统版本 ".
在终端:
system_profiler SPSoftwareDataType
得到:
Software: System Software Overview: System Version: Mac OS X 10.5.5 (9F33) Kernel Version: Darwin 9.5.0 Boot Volume: Main Boot Mode: Normal Computer Name: phoenix User Name: Douglas F Shearer (dougal) Time since boot: 2 days 16:55
要么:
sw_vers
得到:
ProductName: Mac OS X ProductVersion: 10.5.5 BuildVersion: 9F33