我有一个关于针对SDK进行编译的问题,我认为直到昨天才知道。
我有一个iPhone应用程序,该版本针对SDK v3.2编译并在运行版本4的iPhone模拟器上运行正常,但是当我针对SDK 4重新编译应用程序时,界面开始变得混乱。
我认为当您针对iOS / Android SDK等SDK / Frameworks编写应用程序时,您编写的代码会编译到应用程序中(包含任何添加的库),然后在系统上进行处理。 sdk存在于开发机器上,以便应用程序能够编译(并运行编译时检查)但实际上没有编译到应用程序代码中。
我不明白的是,如果这是它的工作方式,那么如何针对较新版本的SDK进行编译会破坏应用程序(请记住,针对它编译的任何版本仍然在iOS版本4上运行)如何不是仍然是相同的编译应用程序。
显然我在这里遗漏了一些东西!
感谢您的任何指示
答案 0 :(得分:0)
有多种原因;当您定位特定版本的操作系统时,它可以更改可用的API集,并且可以更改应用程序的链接方式。在运行时,系统可以执行所谓的“链接在或之后”检查。如果您的应用程序与旧操作系统的目标链接,则较新的操作系统可能会保留某些行为或确保仍存在错误。如果针对最新的操作系统,您将获得新的行为。
所有这一切都是说您的代码中可能存在一些问题,即您依赖于3.x版本中的错误,或者您正在使用其行为在两个版本之间发生变化的API。