具有较低基础sdk的应用程序如何工作?

0xS*_*ina 7 cocoa-touch objective-c ios

在XCode中,我可以指定Base SDK.我想知道幕后工作是怎么做的?如果我正在运行应用程序,例如,在具有iOS 7且我的基础SDK是iOS 6的设备上,那么该应用程序为何具有旧的"外观和感觉"?XCode是否会编译较旧的SDK并将其包含在我的应用程序中,或者新版本的iOS是否附带较旧的库/ SDK?

换句话说,运行时是否知道这个应用程序是使用较低的基础SDK编译的,而且它在UIKit的代码中的某个位置:

if (lower SDK) {
  //show old look/feel
} else {
  //show new look/feel
}
Run Code Online (Sandbox Code Playgroud)

或者应用程序本身是否包含旧库并加载它?

谢谢

Pun*_*rma 5

iOS应用程序与新版本的iOS 向前兼容。原因是 :

几乎所有对iOS版本的更改都是累加的,因此使用较低版本的应用程序构建仍可以在较高iOS版本上运行。

不过,我们需要注意这一点:

随着框架通过各种发行版的发展,会引入或弃用API,并且现有API的行为可能会偶尔发生变化。Apple尽一切努力使可能导致不兼容的更改最小化,在某些情况下,它会根据框架版本提供替代行为。在极少数情况下,您的代码需要确定框架版本并进行相应调整

要了解更多,请阅读

  • 链接中另一个相关的引文:“作为一种向后兼容机制,Apple框架有时会检查针对其构建应用程序的SDK版本,如果是较旧的SDK,则请修改其行为以实现兼容性。这是在Apple预测或发现兼容性问题的情况下完成的。” (3认同)

Enr*_*tyo 0

基础 SDK 是您要用来构建应用程序的 SDK。使用“部署目标”指定您希望应用程序运行的最低操作系统。

如果你想了解 iOS 版本,请查看这个问题

  • 抱歉,这没有解决问题。 (2认同)