OS X版本可可
回答
在UNIX系统上,您可以使用uname(3)
系统调用。见
$ man 3 uname
例子:
#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);
}
在Mac OS X 10.8.5我得到 “9.8.0” 的版本号。请参阅list of releases。 10.0是Mac OS X 10.6,10.2.0是Mac OS X 10.6.2。
这绝对不是在Mac OS X上检查系统版本的正确方法。由Dave Long概述的“Gestalt”是正确的方法。 'uname'不保证返回任何有用的东西。 – 2010-01-22 12:28:18
有几种方法可以做到这一点。
你可以查看是否有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!)"); }
相关的Apple文档可以在中找到使用基于SDK的开发:Determining the Version of a Framework。
他们建议要么测试特定类或方法的存在,要么检查框架版本号,例如, NSAppKitVersionNumber
或NSFoundationVersionNumber
。相关的框架还为不同的操作系统版本声明了许多常量(NSApplication constants,Foundation Constants)。
相关的代码可以是简单的:
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_5) {
// Code for 10.6+ goes here
}
但是,这不适用于Mac OS X 10.4。 – svth 2011-07-29 00:20:09
回答自己,Imimplemented在main.m文件警告如下:
#ifndef NSAppKitVersionNumber10_5
#define NSAppKitVersionNumber10_5 949
#endif
int main(int argc, char *argv[])
{
SInt32 major = 0;
SInt32 minor = 0;
Gestalt(gestaltSystemVersionMajor, &major);
Gestalt(gestaltSystemVersionMinor, &minor);
if ((major == 10 && minor >= 6) || major >= 11) {
CFUserNotificationDisplayNotice(0, kCFUserNotificationCautionAlertLevel,NULL, NULL, NULL, CFSTR("Maestro"), CFSTR("This version is not compatible."), CFSTR("Ok"));
return 0;
}
return NSApplicationMain(argc, (const char **) argv);
}
试试这个来源:http://cocoadevcentral.com/articles/000067.php - 中描述了4如何做到这一点。
- 1. Mac OS X版本的Texture2D.m,.h可用?
- 2. 多键可可(OS X)
- 3. OS X版本的bringSubviewToFront:?
- 4. 如何找出在较旧的Mac OS X版本上可用的Perl版本?
- 5. 我在哪里可以下载旧版本的OS X Server?
- 6. NSWindowFlipper在可可的Mac OS X
- 7. CGAffineTransformMakeScale不起作用 - OS X - 可可
- 8. MAC OS X可可应用程序
- 9. 语音到文本转API可可OS X
- 10. Mac OS X libcurl dylib兼容版本
- 11. 编译为旧版本的Mac OS X
- 12. Mac OS X带有哪些Java版本?
- 13. Mac OS X上的Xcode版本Lion 10.7.2
- 14. mac os中的gcc版本4.1.2 x
- 15. 如何获取OS X系统版本?
- 16. 获取Mac OS X上的eclipse版本
- 17. Mac OS X中的两个Perl版本?
- 18. Mac Os x和xcode版本的iPod 3.1.3
- 19. OS X上的多个Python版本
- 20. PHP 2个diffenrent版本Mac OS X上
- 21. Xcode应用程序版本与Mac OS X版本不兼容
- 22. 建立在XCode 2.5上,OS X 10.4可能与OS X 10.11.3
- 23. NSPopover:类不可用(10.7之前的Mac OS X版本上的NSPopover)
- 24. 是否可以使用旧版本的OS X创建.xcarchive或.ipa?
- 25. 在Mac OS X上使用Swift检查OS版本
- 26. 限制哪些OS X版本在OS X App Store中看到应用程序
- 27. Zlib在OS X中不可用?
- 28. “可编程背景”的能力? (OS X)
- 29. @available - 仅在OS X上可用
- 30. MonoDevelop/GTK OS X可用性问题?
为什么不能在Snow Leopard上运行应用程序? – mipadi 2010-01-22 06:06:19