gpt4 book ai didi

objective-c - 如何知道应用程序运行在哪个 Mac OS 上?

转载 作者:太空狗 更新时间:2023-10-30 03:29:57 25 4
gpt4 key购买 nike

我在一些项目中看到过类似的东西:

#if .....
code...
#endif

但是我现在找不到了...
比方说,如果应用程序在 10.8 上运行,则应用程序会做一件事,否则应用程序会做其他事情。要编写什么代码来检查它是否在 10.8 上运行?
谢谢。

最佳答案

您可能问错了问题。除了极少数情况外,您不应该关心用户运行的系统版本。相反,您应该检查您感兴趣的特定内容是否可用。

例如,如果 Apple 在您要使用的 Mac OS X 10.9 中引入了 MagicHologram 类,则您无需检查用户是否正在运行 Mac OS X 10.9。相反,您检查 MagicHologram 类是否可用。如果是,您可以使用它。如果没有,则不可用。甚至为什么都不重要。也许他们正在运行 10.8。但也许是五年后,Apple 决定完全放弃 MagicHologram 类。

(另外,请记住,您需要弱链接到提供 MagicHologram 类的库 HologramKit。)

同样,如果他们向 NSString 引入了一个新方法,您将检查 NSString 是否知道新方法,而不是检查操作系统版本。

也就是说,NSApplication.h 包含一个名为 NSAppKitVersionNumber 的外部常量。您可以将其与 NSAppKitVersionNumber10_7 之类的常量进行比较,后者(应该注意)是 1138 之类的数字,而不是 10.7。只有少数地方这是合适的,主要是类是私有(private)的和未记录的,但在被记录并成为 SDK 公共(public)部分的一部分之前进行了重大更改。此外,如果您想避免已修复的特定错误,这可能会有所帮助。

回顾一下:

  1. 检测单个类和方法,应覆盖 99.44% 的案例。
  2. 使用 NSAppKitVersionNumberNSAppKitVersionNumber10_7 来涵盖类或方法检测可能会欺骗您的情况。
  3. 前两点涵盖所有正常情况。你不应该再往前走了。但是,如果您必须具有基于人道版本的行为,请查看下面 abarnert 的回答。这是获得它们的最明智的方式。
  4. 不要使用 operatingSystemVersionString,它被明确列为不安全的解析。

引用/更多信息:

  • SDK Compatibility Guide “如果您希望您的应用程序针对特定版本或多个版本的 iOS 或 Mac OS X,请阅读此文档。”

关于objective-c - 如何知道应用程序运行在哪个 Mac OS 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11055146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com