OSX应用程序的向后兼容性

3

好的,这是我的情况:

  • 我在一台运行10.9(Mavericks)的机器上安装了Xcode 5.1.1
  • 我希望构建我的应用程序,使其在10.6及以后的版本上运行
  • 安装的SDK:10.6、10.8、10.9

我需要做什么来确保它在应用商店中显示为“10.6及以后”兼容的呢?

我成功地使用基础SDK设置为10.810.9,并将部署目标设置为10.6进行编译。这样就足够了吗?


附言:我也尝试过使用基础SDK设置为10.6进行编译,但要修复的错误太多了,最好还是避免使用。

你有什么想法吗?

2个回答

2
部署目标是指在运行时您的应用程序需要的最低操作系统版本。
基本 SDK 定义了可在编译时使用的 API 功能级别。
因此,构建可以在10.6及以上版本上运行的应用程序时,您可以将10.9用作基本 SDK。
只需确保在您的应用程序在10.6机器上运行时避免使用10.7/10.8/10.9API的代码路径即可。
正如 trojanfoe 已经指出的那样,您可以使用 respondsToSelector: 来检查某个类/方法是否可用。
另一种方法是使用 NSAppKitVersionNumber:
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_8)

最新SDK中的NSAppKitVersionNumber常量可以在AppKit Release Notes中找到。 更多详情请参考苹果的SDK兼容性指南


2

是的;使用10.9 SDK并将部署目标设置为10.6是可以正常工作的。

您可能会发现有些条件代码路径必须在运行时确定,例如基于respondsToSelector,这将需要一些#pragma以便成功编译。


我能否使用#pragma条件来确定是否基于系统版本使用某个基础方法?我不想在运行时检查是否应该调用某个方法... - Julian F. Weinert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接