2010-09-11 108 views

回答

2

簡短的回答回答了你的問題,你的問題是:使用至少4.0爲您的應用基地SDK版本和準確4.0 部署目標版本

我把兩個答案都降低了,因爲他們錯了或者至少不完整。

在構建應用程序有兩種設置,你應該知道的:

還有就是基地SDK版本定義對哪個版本的應用程序將被編譯的SDK。

也有部署目標版本它定義了最低版本的應用程序需要的IOS。您可以在Xcode中將其設置爲低至2.2.1,但App Store目前不會接受低於3.1.3的版本。

基地SDK版本可以更高那麼部署目標版本。這僅僅意味着您的應用程序向後兼容較舊版本的iOS。這也意味着您的應用程序需要在運行時作出決定,以確保在舊版本上運行時不要使用更新的功能。

例如,在4.0中引入了MFMessageComposeViewController,因此如果您的應用程序已配置爲也運行在3.1.3上,那麼您應該使用NSClassFromString()來查找在使用它之前該特定類是否實際可用。

Stack Overflow上有很多關於如何發現可用功能的問題,所以我不會在這裏重複這些技術。

+0

您對部署目標版本是否正確,我完全錯過了 – rano 2010-09-11 19:41:19

+0

謝謝,這就是我一直在尋找的。 – 2010-09-11 23:41:04

-2

取決於您將使用的API。假設您想實現應用內短信(MFMessageComposeViewController),並希望所有最終用戶(將被定義爲EU)訪問該功能,那麼您必須針對iOS 4.0進行編譯。但是,讓我們假設您希望應用內短信是可選的,並且是針對您的EU的「加號」,您只需針對iOS 3.0編譯應用即可(比方說)。

希望我:-)

0

和稍微重要提示:

行爲做跨OS版本變化。在3.0版本中發生了一堆變化(我們在UITableView/UITableViewCell中遇到了問題):

  • 舊應用程序發生了一些變化(例如,編譯爲2.2.1)。我忘記了這些。
  • 其中一些在工具鏈(我認爲它們改變了如何使用ibtool編譯nib;它就像爲UITableViewCell設置圖像和自定義視圖一樣)。當我們在構建服務器上升級SDK時發生這種情況,即使我們沒有觸及「基礎SDK」
  • 其中一些情況僅在您使用3.0的基本SDK進行編譯時發生(UIKit會自動檢測您已鏈接的版本對並具有用於一些事情向後兼容模式)

此外,還有一些運行/ C++中GCC 4.2,這意味着在OS 2.2.1運行GCC 4.2的應用更改鑄造無符號整型時/長到崩潰float/double或使用std :: ostringstream。我已經添加了對GCC版本的檢查。

所以,不,用較新的SDK編譯可以導致問題—你可能不希望如果有時間限制(你沒有足夠的時間來實現多任務的支持,或者你沒有時間去冒這個險做一個完整的重新測試並修復所有的錯誤,等等)。或者也許你仍然想支持2.2.1出於某種奇怪的原因(4.0下降2.x「設備支持」,這實際上使得無法在2.x設備上調試應用程序)。

通常,在較小的操作系統版本中沒有任何問題(折扣3.1/3.2)。我建議儘快升級SDK;不要因爲舊的操作系統沒有新功能而回避新功能。

相關問題