7

Mavericks 即将问世,对于那些总是忙于了解和使用所有这些新功能和 API 的开发人员来说。对我来说,我认为现在是问一个困扰我很长时间的问题的最佳时机。

在上下文中,事情是这样的:我正在开发一个我希望能够在 10.8 上运行的应用程序(因此目标系统是 10.8+)。现在我正在使用 10.8 SDK。然而,随着 10.9 的发布,我想在我的应用程序中使用一些非常好的 API。我在我的代码中使用它们,但是当然,我必须针对 10.9 SDK 编译我的应用程序。如果我这样做,我还能在 10.8 上运行该应用程序吗?

或者,以更一般的方式,如果我针对一个 SDK 编译我的应用程序,我仍然可以在“较低”的 Mac OS 上运行它吗?如果是,你能解释一下它是如何工作的(编译器在做什么)?这对我来说是个谜。

4

3 回答 3

5

一般来说,Xcode 将 SDK 的 issue 与应用的 Deployment Target 分离。

SDK 由Base SDK确定,部署目标由OS X Deployment Target确定。这些都显示在 Xcode 中每个目标的Build Settings选项卡中。

在使用不同的 SDK 和 Target 进行编程时,您有责任确保不会在没有它们的操作系统上调用方法或函数。这通常通过弱链接(在新框架的情况下)和/或-respondsToSelector:在现有类和框架上的新方法的情况下使用来促进。

于 2013-06-15T20:52:07.980 回答
1

不要指望新的 API 在较低版本上运行时可以工作。它不是那样工作的。

于 2013-06-16T17:54:31.063 回答
1

在 Xcode 中,在构建设置下,有一个目标操作系统选项,您可以在其中选择 10.8。10.8 应用程序通常与 10.9 兼容,因此编译后的应用程序将适用于两种操作系统。

于 2013-06-16T13:54:16.023 回答