【问题标题】:iOS 4 and iOS 5 backward compatibilityiOS 4 和 iOS 5 向后兼容性
【发布时间】:2012-03-04 16:34:14
【问题描述】:

我有一个关于 iOS 4 和 5 的问题。我真的很困惑,希望有人能帮我解决这个问题。

我在我的应用程序中使用 iOS 5 SDK。如果我使用苹果提供的 iOS 5 Twitter 集成,它会在安装了 iOS 4 的 iPhone 上运行吗?

向后兼容有效吗?

我以 Twitter 为例,但向后兼容性真的适用于 iOS 5 吗?

【问题讨论】:

    标签: ios5 ios4 backwards-compatibility


    【解决方案1】:

    如果您正确地设置了您的应用程序,使其可以在运行 iOS 4 的设备上运行而不会崩溃,那么:是的,它将在安装了 iOS 4 的 iPhone 上运行。 p>

    您的应用应实现这样的逻辑,以便在 iOS 5 设备上运行应用时使用 Twitter API。当应用在 iOS 4 设备上运行时,您可以有条件地选择来使用 Twitter API。

    相反,您可以使用不同的 Twitter 库(如 MGTwitterEngine 或您自己的) - 或者只为这些用户排除 Twitter 功能。

    要检查 TWRequest 类是否存在,请使用 NSClassFromString。

    Class twRequestClass = NSClassFromString(@"TWRequest");
    if (twRequestClass == nil) {
        // TWRequest does not exist on this device (running iOS version < 5.0)
        // ... do something appropriate ...
    } else {
        TWRequest *twRequest = [[twRequestClass alloc] init];
        // ^ I didn't look up the proper initializer, so you should change that line if necessary
        // ...
    }
    

    【讨论】:

      【解决方案2】:

      您必须根据用户使用的 iOS 版本创建 ifs。例如,在 iOS 5 中有一个 Appearance API 可以修改大部分 UI,但在 iOS 4 中没有,所以你必须创建一个这样的:

      // not supported on iOS4
      UINavigationBar *navBar = [myNavController navigationBar];
      if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
      {
          [navBar setBackgroundImage:[UIImage imageNamed:@"bg.jpg"] forBarMetrics:UIBarMetricsDefault];
      } 
      

      【讨论】:

        【解决方案3】:

        如果您正确设置您的应用程序,以便它可以在运行 iOS 4 的设备上运行,它会崩溃。这是因为您正在尝试访问不可用的方法/功能。 解决这个问题的方法是检查某个功能是否可用

        if(NSClassFromString(@"UIPopoverController")) {
        // Do something
        }
        

        (Popover 控制器只是一个例子)

        您也可以使用

        检查版本
        float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
        

        然后根据版本运行一段特定的代码(即,如果是 iOS 5,则预先制作 twitter 的东西,否则做一些不同的事情)

        【讨论】:

        • systemVersion 不保证返回可解析为 float 的值,事实上目前返回完全可解析的值。
        【解决方案4】:

        不,如果您使用 iOS5 中提供的 Twitter API,它们将无法在 iOS4 上运行。

        原因是当应用程序在 iOS4 上运行时,系统将不具备 API 可用性。

        如果您查看文档,您可以看到该类/API 可用的 iOS 版本。

        我希望这会有所帮助..

        【讨论】:

        • 这意味着没有向后兼容性。:(
        • 对...您无法在运行 iOS4 的设备上运行仅适用于 iOS5 或更高版本的 API。
        • 现在虽然这个功能在 5.0 以下不可用,但这并不意味着你不能有更低的部署目标。简而言之,我的推特按钮显示如果 iOS 5.0 或更高版本> 启动推特,否则 UIAlertView 说明该功能仅适用于 5.0 或更高版本。
        猜你喜欢
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        • 2012-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 1970-01-01
        相关资源
        最近更新 更多