为10.8+开发应用程序,但使用10.9 SDK

时间:2013-06-15 20:23:59

标签: macos sdk osx-mavericks

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

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

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

3 个答案:

答案 0 :(得分:5)

一般来说,Xcode解除了SDK的问题和应用程序的部署目标。

SDK由 Base SDK 确定,部署目标由 OS X部署目标确定。这些都显示在Xcode中每个目标的构建设置标签中。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

在较低版本上运行时,不要指望新的Apis能够正常工作。它不起作用。