2012-10-02 202 views

回答

10

是的,任何iOS SDK都可以让你开发以前版本的操作系统。 例如,即使使用iOS6 SDK,您也可以开发iOS5。

您只需将“部署目标”设置设置为5.1。

然后,您可以:在iOS5.1可用

  • 或者只使用方法,不使用任何iOS6的专用方法,以确保您的应用程序仍然会在iOS5.1
  • 运行
  • 或执行每次你想调用一个只在iOS6中可用的方法时,在运行时检查,并且只有在该方法可用的情况下(如果用户的iPhone具有支持该方法的最近版本的iOS)才调用该方法。

欲了解更多信息和配置和示例情况的详细说明,我强烈建议苹果文档在读SDK Compatibility Guide


例如,如果你想提供一键分享到社交网络的东西,你可能要使用的Social.framework,但是这一个是仅适用于iOS6的。因此,你可以提出这个功能对于iOS6的用户和警报iOS5的用户,他们需要更新他们的iPhone到iOS6的使用这个特定的功能:

// Always test the availability of a class/method/... to use 
// instead of comparing the system version or whatever other method, see doc 
if ([SLComposeViewController class]) 
{ 
    // Only true if the class exists, so the framework is available we can use the class 
    SLComposeViewController* composer = [composeViewControllerForServiceType:SLServiceTypeFacebook]; 
    // ... then present the composer, etc and handle everything to manage this 
} else { 
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Sharing unavailable" 
       message:@"You need to upgrade to iOS6 to be able to use this feature!" 
       delegate:nil 
       cancelButtonTitle:nil 
       otherButtonTitles:@"OK, will do!"]; 
    [alert show]; 
    [alert release]; 
} 

然后简单的薄弱环节Social.framework(改变“必需”,以如果将框架添加到链接器构建阶段,则为“可选”),如文档中详细介绍的那样。

+0

非常详细和全面的答案:D我会读它。感谢:D 但我想知道为什么在Target和Project中有两个独立的部署配置。 – code4j

+0

出于与每个其他构建设置相同的原因。例如,如果您的项目生成应用程序或库的“简单”版本(例如,使用#if!LIGHTVERSION /#endif条件来停用代码的某些部分),这可能会很有用,这将与5.0兼容。和相同应用程序的“完整”版本,其中将包含更多功能,这些功能仅与iOS 6.0兼容。在这种情况下,让您的“LightApp”目标使用iOS5的部署目标并且您的“FullApp”目标使用iOS6的Dep目标是有意义的。 _这只是一个例子;)_ – AliSoftware

+0

非常好的解释,非常感谢:) – code4j

1

是的,你仍然可以创建的iOS 5与iOS 6的SDK兼容的应用程序。您必须相应地设置部署目标(如您所做的那样),而不是使用任何iOS 6功能。

相关问题