OSX应用程序的向后兼容性

时间:2014-06-16 11:12:45

标签: objective-c macos cocoa sdk app-store

好的,所以我的情况如此:

  • 我在10.9(小牛)机器上获得了Xcode 5.1.1
  • 我想构建我的应用程序,以便它在10.6及更高版本上运行
  • 已安装SDK:10.6,10.8,10.9

我需要做些什么来确保它能够显示为" 10.6及更高版本"兼容应用程序商店?

我设法将基本SDK 设置为10.810.9并将部署目标设置为{{ 1}}。这样就够了吗?


PS 我也尝试使用 Base SDK 设置为10.6进行编译,但是有很多错误需要修复,如果我能避免它,它会更好。

所有想法?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

部署目标定义了应用在运行时所需的最低操作系统版本 Base SDK定义了编译时可用的API功能级别。

因此,在构建可在10.6及更高版本上运行的应用程序时,您可以使用10.9作为Base SDK 当您的应用程序在10.6计算机上运行时,您必须确保避免使用10.7 / 10.8 / 10.9 API的代码路径。

正如trojanfoe已经指出的那样,您可以使用respondsToSelector:来检查某个类/方法是否可用。
另一种方法是使用NSAppKitVersionNumber:

if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_8)

最新SDK的NSAppKitVersionNumber常量可以在AppKit Release Notes中找到。 有关详细信息,请参阅Apple的SDK Compatibility Guide