它已经共同建议使用NSAppKitVersionNumber
检查通过Cocoa框架在运行时提供的新功能:OS X 10.10 Yosemite为什么`NSAppKitVersionNumber10_10`不包含在`NSApplication.h`中?
https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/
一个典型的利用,这是地板()的值,并对照在NSApplication.h中提供的值。例如:
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_8) {
/* On a 10.8.x or earlier system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_9) {
/* On a 10.9 - 10.9.x system */
} else {
/* 10.10 or later system */
}
在OS X 10.10和Xcode的6.2,NSApplication.h
包括:
/* The version of the AppKit framework */
APPKIT_EXTERN const double NSAppKitVersionNumber;
#define NSAppKitVersionNumber10_0 577
#define NSAppKitVersionNumber10_1 620
#define NSAppKitVersionNumber10_2 663
#define NSAppKitVersionNumber10_2_3 663.6
#define NSAppKitVersionNumber10_3 743
#define NSAppKitVersionNumber10_3_2 743.14
#define NSAppKitVersionNumber10_3_3 743.2
#define NSAppKitVersionNumber10_3_5 743.24
#define NSAppKitVersionNumber10_3_7 743.33
#define NSAppKitVersionNumber10_3_9 743.36
#define NSAppKitVersionNumber10_4 824
#define NSAppKitVersionNumber10_4_1 824.1
#define NSAppKitVersionNumber10_4_3 824.23
#define NSAppKitVersionNumber10_4_4 824.33
#define NSAppKitVersionNumber10_4_7 824.41
#define NSAppKitVersionNumber10_5 949
#define NSAppKitVersionNumber10_5_2 949.27
#define NSAppKitVersionNumber10_5_3 949.33
#define NSAppKitVersionNumber10_6 1038
#define NSAppKitVersionNumber10_7 1138
#define NSAppKitVersionNumber10_7_2 1138.23
#define NSAppKitVersionNumber10_7_3 1138.32
#define NSAppKitVersionNumber10_7_4 1138.47
#define NSAppKitVersionNumber10_8 1187
#define NSAppKitVersionNumber10_9 1265
值得注意的是缺少的是NSAppKitVersionNumber10_10
为OS X 10.10约塞米蒂。
是否已将10_10
版本明确排除,并且出于何种原因?
这些常量通常只显示在版本之后它们是最新的吗?
或者这种检查版本号的方法现在已过时?如果是这样,那么替换是什么?
好知道,但我还是不明白的*原因*不包括OS X 10.10'10_10'。 – pkamb 2015-04-14 17:58:01
我在猜测,因为当10.10 SDK处于测试阶段时,10.10的运输AppKit的实际版本号尚未最终确定。也就是说,SDK必须在框架之前完成。 – 2015-04-15 01:10:01