Mavericks即将面市,对于那些一直忙于开发所有这些新功能和API来了解和使用的开发人员。对我而言,我认为现在是提出一个困扰我很长时间的问题的最佳时机。
这是事情,在上下文中:我正在开发一个我希望能够在10.8上运行的应用程序(因此目标系统是10.8+)。现在我正在使用10.8 SDK。但是,随着10.9的发布,我想在我的应用程序中使用一些非常好的API。我在我的代码中使用它们,但当然,我必须针对10.9 SDK编译我的应用程序。如果我这样做,我仍然可以在10.8 上运行应用程序吗?
或者,以更一般的方式,如果我针对一个SDK编译我的应用程序,我仍然可以在'较低'的Mac OS上运行吗?如果是,你能解释一下它是如何工作的(编译器在做什么)?这对我来说是个谜。
答案 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能够正常工作。它不起作用。