2010-08-09 71 views
0

我正在構建一個應用程序,這是一個通用的iPhone/iPad應用程序。我想支持使用iOS 4.0 SDK的快速應用切換(多任務)(例如:在iOS 4.0的iPhone 3GS上)。但是,當我將應用程序設置爲針對iPhone OS 4.0構建時,它不會在iPad(當前最新的軟件版本是3.2.1)上啓動。如何支持與3.2 SDK的多任務(快速應用程序切換)

因此,看起來版本的SDK是最低的操作系統應用程序將隨之啓動的版本。

XCode設置中「iPhone操作系統部署目標」字段的註釋狀態爲:「代碼將在此操作系統和更高版本的iPhone操作系統上加載,早期版本中不可用的框架API將弱連接;您的代碼應該在調用更新的APIS之前檢查空函數指針或特定系統版本。「

這似乎是矛盾的。如果它不會在早期的API上啓動,它如何弱鏈接到空指針?

最終,我想知道:我可以構建一款通用應用程序並支持多任務處理(因爲iPad操作系統爲3.2)?

回答

2

將您的版本SKD設置爲iOS 4但您的部署目標爲iOS 3.2。 (我建議創建3.x兼容的iPhone應用程序,但這是另一回事)。這種方式啓用多任務,但說,代碼也運行在3.2下,蘋果和你的iPad會相信和運行的事情。

但要小心,因此您必須檢查自己是否已經存在3.2以下的某些方法,因爲編譯器現在不會再發出警告(因爲它針對4.0構建)!最流行的錯誤是撥打[[UIScreen mainScreen] scale],這在3.2下不可用,因此您的應用程序將崩潰。您必須首先檢查是否支持:

CGFloat myScale = 1.f; 
if ([UIScreen instancesRespondToSelector:@selector(scale)]) { 
    myScale = [[UIScreen mainScreen] scale]; 
} 
相關問題