【问题标题】:As of iOS 9, application:openURL:sourceApplication:annotation: is deprecated, how do I use the new method with iOS 8?从 iOS 9 开始,application:openURL:sourceApplication:annotation: 已弃用,如何在 iOS 8 中使用新方法?
【发布时间】:2016-03-21 10:03:07
【问题描述】:

我当前的应用仍然支持 iOS 8,但我想改用新方法 application:openURL:options:,这在 iOS 8 中不可用。

如何在 iOS 8 设备上支持旧方法,而在 iOS 9 及更高版本上支持新选项?

【问题讨论】:

  • 你可以同时实现它们,让系统调用它想要的任何一个。

标签: ios swift cocoa-touch ios9 uiapplicationdelegate


【解决方案1】:

我的建议是您可以将这两种方法用于同一个主体。 当应用程序在 iOS 8 中运行时,它将调用 iOS 8 方法,否则将调用 iOS 9 方法。

【讨论】:

    【解决方案2】:

    我不熟悉这个特定的方法,但你不能对选择器检查做出响应吗?

    if ([self respondsToSelector:@selector(application:openURL:sourceApplication:annotation)])
    {
         // Call the iOS9 Method
    }
    else
    {
        // Call the iOS8 Method
    }
    

    【讨论】:

    • 不,这里不合适。问题是关于UIApplicationDelegate 中的委托方法。调用问题中的方法的是系统框架,而不是应用程序的代码。
    • @holex 我没有意识到我的答案无关紧要,或者我不会发布它,如果你们知道关于“基本”方法的一切,为什么不发布答案。当然,如果我的不正确,那么关于#available 块的答案也是如此,但没有人评论该帖子。谢谢你让我觉得自己是个小而愚蠢的家伙。我以后尽量不帮忙。
    • @asjj,您以后可以提供帮助,但请更仔细地阅读问题并尝试理解 OP 的问题并回答 - 这不是竞争,如果您不确定就离开它,您不需要不惜一切代价拼命提出一些随机的答案。
    【解决方案3】:

    Swift 2.0 使用 #available 块添加了可用性检查

    if #available(iOS 9, *) {
        // use new method
    } else {
        // use old method
    }
    

    更多信息请访问this blog post

    【讨论】:

      猜你喜欢
      • 2014-11-15
      • 1970-01-01
      • 2019-02-17
      • 2015-12-06
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      相关资源
      最近更新 更多