2013-02-24 109 views
0

我有一个老的应用程序,我维护。该应用程序首先在XCode 4.2上编译。如果我采用完全相同的项目,在XCode 4.6上查找并编译它,我会得到诸如ViewControllers之类的奇怪错误,而不是刷新,Back无法正常工作等等。如果我将采取相同的项目,并在我的另一台机器上的xcode 4.2重新编译它,一切都会正常工作。在我深入研究代码之前,有人能告诉我为什么会发生这样的事情吗?我主要的怀疑是每个Xcode的基本SDK。那有意义吗?升级Xcode后项目是越野车

+1

我无法告诉你4.0和4.2之间是否会有差异,但是历史上iOS框架*会根据编译的SDK的版本略有改变。你不能排除。而且你应该把它当作你的应用程序中的错误,以至于老版本的行为只是神秘地击中了代码路径。 – 2013-02-24 07:33:13

+0

是否可以将XCode 4.6中的基础SDK更改回IOS 5而不是iOS 6.1?这将解决我很多问题 – Segev 2013-02-24 07:49:00

+2

我强烈怀疑你的代码有问题(尽管iOS6中的一些行为是新的或者以不同的方式运行,即自动旋转/自动布局)。为什么不编辑您的问题以包含示例错误和适当的代码?你会有更好的机会帮助你。 – 2013-02-24 08:53:18

回答

1

我不能告诉你是否会有4.2和4.6之间的差异,但历史上设备上的iOS框架(以及在较低程度上模拟器)略微取决于什么版本一个应用程序编译的SDK。你不能排除。

经典(尽管现在古老)的例子是背景。当主页按钮被推送时,针对较旧的SDK构建的应用程序退出,而不是获得较新的行为。最近的(但是很微妙的)例子包括对表格视图和设备旋转改变的一些改变。

您应该而不是尝试使用较新的编译器使用较旧的SDK进行构建。 Apple不支持这种配置。你应该总是使用最新的SDK。无论如何,你不想假装这些问题不存在:错误是真实的,它们之前只是隐藏了。

您不可能以这种方式修复这些错误,以至于iOS的旧版本继续运行(尽管您可能会发现它会打开一堆您认为不值得修复的蠕虫较旧的操作系统)。