Par*_*fna 4 macos cocoa objective-c nsapplication osx-elcapitan
我使用下面的代码在运行时检查OS X版本.
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_10)
{
/* On a 10.10.x or earlier system */
}
Run Code Online (Sandbox Code Playgroud)
但是这个条件在10.10.4 OS X上返回false.我正在使用Xcode 6.3.2.
根据适用于OS X v10.11的AppKit发行说明,它应该可以工作.
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_9) {
/* On a 10.9.x or earlier system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_10) {
/* On a 10.10 - 10.10.x system */
} else {
/* 10.11 or later system */
}
Run Code Online (Sandbox Code Playgroud)
从Xcode 9.0开始,您可以使用下面的代码.参考Apple文档.
迅速
if #available(macOS 10.13, *) {
// macOS 10.13 or later code path
} else {
// code for earlier than 10.13
}
Run Code Online (Sandbox Code Playgroud)
Objective-C的
if (@available(macOS 10.13, *)) {
// macOS 10.13 or later code path
} else {
// code for earlier than 10.13
}
Run Code Online (Sandbox Code Playgroud)
更新:
使用#define NSAppKitVersionNumber10_10_Max 1349
老的:
从10.11 SDK开始
#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
#define NSAppKitVersionNumber10_10 1343
#define NSAppKitVersionNumber10_10_2 1344
#define NSAppKitVersionNumber10_10_3 1347
Run Code Online (Sandbox Code Playgroud)
对于 10.10.4 它1348.0(来自 NSLog 输出)
它们增加了 10.10.x 常量的小数部分。
解决方法是使用10.11 上的CFBundleVersion值。/System/Library/Frameworks/AppKit.framework/Resources/Info.plist
if (NSAppKitVersionNumber < 1391.12)
{
/* On a 10.10.x or earlier system */
}
Run Code Online (Sandbox Code Playgroud)
注意:我的 OS X 10.11 构建版本是 15A244a。如果有人第一次构建,请更新 if 条件中的值。
| 归档时间: |
|
| 查看次数: |
5189 次 |
| 最近记录: |