2011-11-15 49 views
1

我正在編寫一個iPhone應用程序,我希望在這個時間點支持最大的用戶羣(儘可能減少痛苦),所以我決定將IOS 4.3+作爲目標用戶的一個很好的子集。如何在我的iPhone應用程序中支持iOS 4.X SDK和iOS 5 SDK?

我開始的XCode 4.2工作,但恢復到了XCode 4.1當我意識到的項目模板發生了變化,一切似乎都非常有故事板,ARC等交織在一起

我建立了我的申請到我實際上想要在裝有iOS5的設備上進行測試。當我嘗試,雖然使用它,我只要我點擊「使用促進發展」的組織者/ XCode中得到這個消息:

enter image description here

該項目的生成設置是這樣的:

enter image description here

我的問題是這樣的:我如何獲得這個應用程序,內置於XCode 4.1,在iOS 4.3和iOS 5手機上運行?

iOS SDK是否不向後兼容?我來自Android開發,其中一個不到當前的SDK通常會在一個更新的SDK上工作 - 這在iOS世界中有何不同?如果是這樣,通常如何處理?

任何方向我應該如何進行將不勝感激。

+0

看起來它不起作用,因爲您使用的XCode無法測試iOS 5上的應用程序;但通常較舊的應用程序適用於最新的iOS版本。 – 2011-11-15 16:35:28

回答

4

你可以繼續在Xcode 4.2中打開你的應用程序,它應該仍然有效。自Xcode 3.x開始,我一直在研究一個特定的應用程序,而且我幾乎完成了,現在正在Xcode 4.2中徘徊。這不應該是一個問題。如果你想使用Xcode 4.1,你會好起來的,但你不會使用iOS 5中引入的新功能。

「跨版本」開發有幾個方面需要注意。

  1. 測試:只能在iOS系統的版本附帶的SDK,或者安裝在你可能有物理設備測試。 SDK通常只包含最新的iOS版本,有時也包含前一版本,但是自Xcode 4發佈以來,舊版本的SDK逐漸被棄用。這並不是說你的應用程序與iOS 5 SDK相關聯,不會在較早版本的iOS上運行。這取決於你如何實現新功能。

  2. 特點:爲了正確支持iOS的早期版本,您需要確保在沒有properly checking for the existence of classes, methods, and properties that were introduced in the newer versions of the OS的情況下不要實現新功能。與Android不同,您不必擔心一百萬個硬件配置。 ;-)

  3. 弱鏈接:爲了支持新功能,並且仍然與舊版本的iOS兼容,您需要與您用於實現新功能的框架進行弱連接。你可以在Apple Documentation on Weak Linking中閱讀更多。

  4. 部署目標:防止應用在舊設備上加載的設置稱爲「部署目標」。如果您將其設置爲3.1.3,那麼您的應用將在iOS 3.1.3及更高版本上運行。請記住,如果您沒有對正確的版本檢查進行編碼,您的應用可能會中斷。

  5. ARC:您可以選擇在創建項目時啓用或禁用自動引用計數。 ARC僅在編譯時掃描您的程序,而不是在運行時,它不會在較早版本的操作系統上中斷應用程序。

2

您需要最新版本的XCode和iOS SDK才能將您的應用安裝到iOS 5.0手機上。這並不意味着相反的情況 - 您的設備上不需要安裝在計算機上的iOS版本。

希望這會有所幫助!

1

您可以使用最新的SDK,並在項目構建設置中將「IOS部署目標」版本設置爲4.3。

1

XCode 4.1不支持iOS5,因爲Xcode包不包含iOS5 SDK。因此,您必須返回到Xcode 4.2並將您的項目定位到iOS 4.3(您也可以使用此Xcode版本將其定位到iOS 4.0,但是您將無法模擬它;甚至可以從以下版本下載舊的iOS 4.x軟件包版本Xcode首選項菜單,如果你真的需要在你的設備中模擬它們)。

如果你願意,你可以選擇退出ARC,這個選擇是在你創建項目時給你的,所以不要擔心;但考慮到ARC在編譯時只會在運行時發揮它的魔力,所以如果你決定使用這種技術,你的後向兼容性將會保持不變。最後,如果你不想Storyboard,只需選擇Empty應用程序模板,它只會將基本文件放入你的項目中。從這個模板你可以創建任何iOS應用程序,這是我通常遵循的方法。

相關問題