我正在开发一个Cocoa应用程序,需要检查当前的OS X版本是否是OS X 10.6 Snow Leopard
如果当前版本是Snow Leopard,我需要使用错误警报关闭应用程序.
如何找到当前的OS X版本?
可以在使用基于SDK的开发:确定框架的版本中找到相关的Apple文档.
他们建议测试特定类或方法的存在,或检查框架版本号,例如NSAppKitVersionNumber或NSFoundationVersionNumber.相关框架还为不同的os版本(NSApplication常量,Foundation Constants)声明了许多常量.
相关代码可以简单如下:
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_5) {
// Code for 10.6+ goes here
}
Run Code Online (Sandbox Code Playgroud)
有几种方法可以做到这一点.
您可以检查是否存在仅限10.6的类:
Class snowLeopardOnlyClass = NSClassFromString(@"NSRunningApplication");
if (snowLeopardOnlyClass != nil) {
NSLog(@"I'm running on Snow Leopard!");
}使用系统函数(如Gestalt)确定操作系统版本:
#import <CoreServices/CoreServices.h>
SInt32 major = 0;
SInt32 minor = 0;
Gestalt(gestaltSystemVersionMajor, &major);
Gestalt(gestaltSystemVersionMinor, &minor);
if ((major == 10 && minor >= 6) || major >= 11) {
NSLog(@"I'm running on Snow Leopard (at least!)");
}在 UNIX 系统上,您可以使用uname(3)系统调用。看
$ man 3 uname
Run Code Online (Sandbox Code Playgroud)
例子:
#include <stdio.h>
#include <sys/utsname.h>
int main()
{
struct utsname un;
uname(&un);
printf("sysname: %s\nnodename: %s\nrelease: %s\nversion: %s\nmachine: %s\n",
un.sysname, un.nodename, un.release, un.version, un.machine);
}
Run Code Online (Sandbox Code Playgroud)
在 Mac OS X 10.8.5 上,我得到“9.8.0”作为版本号。请参阅版本列表。10.0 是 Mac OS X 10.6,10.2.0 是 Mac OS X 10.6.2。
| 归档时间: |
|
| 查看次数: |
4857 次 |
| 最近记录: |