为什么在Xcode 6上构建的应用程序似乎在iOS 8设备上使用iOS 8系统库,而在Xcode 5上构建的应用程序不在?

时间:2014-09-11 08:47:47

标签: ios objective-c xcode ios8 xcode6

我需要尽快提交应用程序的更新,当我使用Xcode 6 GM在iOS 8设备上运行时,会出现许多错误。当我使用Xcode 5在iOS 8设备上运行相同的应用程序时,没有发生这些错误。

E.g。 - [UIScreen bounds]取决于iOS 8。当使用Xcode 6运行app -landscape时,许多UI元素被错误定位会注意到这种新行为。当我在同一iOS 8设备上使用Xcode 5运行应用程序时,情况并未发生。

2 个答案:

答案 0 :(得分:1)

这是完全正常的,也是Apple历史上提供向后兼容性的方式。

使用xCode 5构建时,您将针对iOS 7 SDK进行编译(假设您在Build Settings-> Base SDK中指定的内容)。 iOS设备会在您运行应用程序时考虑到这一点,并为您提供向后兼容的行为(主要是......)。

例如,如果您在xCode 5上构建项目,则无论您运行的操作系统或方向如何,您都将获得320x568(在4&#34;屏幕上)的屏幕大小。< / p>

但是,当您在xCode 6上构建时,横向iOS 8设备的屏幕尺寸为568x320,而iOS 7设备则为320x568。

如果您要在xCode 6上构建新应用,您还应该了解为针对iOS 7或更早版本的应用提供启动图像(而不是启动屏幕)的要求。根据文档:

  

针对iOS 7.x或之前版本的应用程序也需要提供   传统的PNG通过资产目录发布。没有启动PNG   iOS 7及更早版本的应用程序将运行在视网膜3.5“   视网膜4“显示器上的兼容模式。

答案 1 :(得分:0)

在构建设置中,基本sdk默认为最新版本。对于xcode 5,它是ios7。所以你的应用程序是使用它构建的。