如何使iOS5应用程序向后兼容iOS4?

时间:2012-01-17 08:38:25

标签: iphone objective-c ios xcode ios5

我是iOS开发的新手,刚刚使用iOS5 SDK和Xcode 4.2完成了我的第一个应用程序。现在的问题是我的应用程序将要求用户升级到iOS5,因为我使用Storyboard API为应用程序创建UI。故事板仅适用于iOS5。

我的问题是,如何使我的应用程序向后兼容至少iOS4?是否像使用nib文件创建UI一样简单?有人可以给我一个关于如何解决这个问题的例子吗?

此外,是否还有其他类似的陷阱需要注意,这会使我的应用向后兼容?

3 个答案:

答案 0 :(得分:4)

一般来说,如果你想向后兼容,你应该:

  1. 微弱地链接框架。例如,Twitter.framework仅适用于iOS> 5.0在Xcode的optional部分中将框架标记为Link Binary with Libraries

  2. 照常导入框架的标题

    #import <Twitter.Twitter.h>
    
  3. 而不是检查“操作系统版本是否大于5.0”,而不是像这样检查:

    • 具有特定名称的班级是否可用:

      Class TWTweetClass = NSClassFromString(@"TWTweetComposeViewController");
      
      if (TWTweetClass){
          // Use the new stuff
          TWTweetComposeViewController *tweetSheet = [[TWTweetComposeViewController alloc] init];
          // etc.
      } else {
          // Handle the case when the class is not available
      }
      
    • 给定对象是否响应选择器:

      if([someObject doesRespondToSelector:@selector(someNewlyAvailableSelector:)]){
          [someObject performSelector:@selector(someNewSelector:)];
      }
      
  4. 这适用于Twitter框架,但是,故事板在这方面是不同的,因为它不像您可以在运行时检查的可选框架。如果您想使用故事板,您的用户必须至少拥有iOS 5.0版。

答案 1 :(得分:0)

UIStoryboardSegue是iOS 5,但该应用程序不会在iOS 4上运行。由于它不是编译时功能,您将不得不回到使用NIB。

您使用的任何仅在iOS 5中可用的方法在iOS 4中无效,因此任何处理故事板的方法都无法在iOS 4中使用。

答案 2 :(得分:0)

你应该研究https://github.com/doubleencore/DETweetComposeViewController。它是与TWTweetComposeViewController的iOS4兼容的重新实现。