2010-08-20 115 views
0

因此,我可能在更新我的應用程序到iOS 4.0時犯了一個錯誤,通過擦除我的Xcode安裝並僅安裝4.0 SDK(我甚至無法在我的備份中找到SDK 3.1.3,doh!)。我有一個應用程序,現在已經建立了4.0的基礎SDK,它說在iTunes中它需要4.0,但我添加的唯一的東西是方法-applicationDidEnterBackgroundState和-applicationDidBecomeActive(基本上只是複製和粘貼保存/加載數據代碼-applicationWillTerminate和-viewDidLoad)。我可以在Build Settings中將iPhone操作系統部署目標設置爲3.1.3來重建應用程序,並且Apple會允許我基本上降級我的應用程序?我應該放入那些檢查4.0的#If_Define語句,以便有條件地啓用這些4.0方法嗎?如何使iOS 4.0應用程序與iPhone OS 3.1.3兼容?

回答

0

不,你不需要使用#ifdef語句。你可以調用任何你想要的方法 - 問題是UIApplication實例是否會調用它:)。

另外,我相信您的部署設置將處理iTunes問題。所以,你應該把它設置爲3.1.3(或者3.0,除非特別需要,我知道很多人沒有在3s之間升級,因爲它有很少的特性,很多時候它基本上是一個反越獄版本)。

至於代碼,我已經處理這個問題是這樣的:

- (void) applicationWillTerminate:(UIApplication *)application 
{ 
    // Just pass it on to the new iOS4 delegate 
    NSLog(@"Application will terminate"); 
    [self applicationDidEnterBackground:application]; 
} 

而對於前景,我只是有從application:didFinishLaunchingWithOptions:applicationWillEnterForeground:稱爲既是一個「裝載機」的方法。

適用於我的3G w/3.0(我拒絕在3G上看到iOS4後升級!)的軟件以及運行iOS4的3GS。

+0

哦,好的......所以基本上當應用程序在3.0中運行時,它將忽略任何-applicationDidEnterBackground調用......是的,我似乎記得Objective-C的好處之一 – 2010-08-21 05:44:43