Mavericks 即将推出,对于开发人员来说,他们总是忙于了解和使用所有这些新功能和 API。对我来说,我认为现在是问一个困扰我很长时间的问题的最佳时机。
在上下文中,事情是这样的:我正在开发一个我希望能够在 10.8 上运行的应用程序(因此目标系统是 10.8+)。现在我正在使用 10.8 SDK。然而,随着 10.9 的发布,我想在我的应用程序中使用一些非常棒的 API。我在我的代码中使用它们,但是,当然,我必须针对 10.9 SDK 编译我的应用程序。如果我这样做,我还能在 10.8 上运行该应用程序吗? ?
或者,更一般地说,如果我针对一个 SDK 编译我的应用程序,我仍然可以在“较低”的 Mac OS 上运行它吗?如果是,你能解释一下它是如何工作的吗(编译器在做什么)?这对我来说是个谜。
请您参考如下方法:
一般来说,Xcode 将 SDK 的问题与应用程序的部署目标分离开来。
SDK由决定基础 SDK ,部署目标由决定OS X 部署目标 .这些都出现在 中build设置 Xcode 中每个目标的选项卡。
使用不同的 SDK 和 Target 进行编程时,您有责任确保不在没有它们的操作系统上调用方法或函数。这通常通过弱链接(在新框架的情况下)和/或使用 -respondsToSelector:
来促进。在现有类和框架上的新方法的情况下。