2013-02-24 110 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的舊版本繼續運行(儘管您可能會發現它會打開一堆您認爲不值得修復的蠕蟲較舊的操作系統)。