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