2010-08-20 111 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