首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何支持iOs 9功能,同时保持iOs 8的支持?

如何支持iOs 9功能,同时保持iOs 8的支持?
EN

Stack Overflow用户
提问于 2015-09-23 03:02:26
回答 3查看 823关注 0票数 3

基本上问题就在标题里。我确信有一种方法可以将你的应用程序发布到更早的iOs版本(在本例中是8),同时仍然能够使用更新的OS版本的独占功能。示例:我的应用程序对iOs 8.3的支持最低,随着iOs 9的最新发布,我想增加对强制触摸(只在iOs 9中可用)的支持,但同时,我希望能够修复but,并进行UI改进,例如,并将更新发布到这两个版本中。例如,主要的应用程序都会这样做,所以肯定有办法,但我哪儿也找不到,我放弃了:

编辑:有一个很好的方法吗?而不检查respondsToSelector之类的东西?类似于单独的项目?或者xcconfig文件可以做到这一点?我只是想知道..。因为在每一个ios 9目标功能上都有一个if else并不是一个很好的解决方案,当你谈论一个企业/大型应用程序时

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-23 05:54:33

Swift 2的可用性功能应该可以解决您的问题。利用可用性,Swift支持操作系统版本控制和符号可用性测试。

首先,将构建设置中的部署目标设置为iOS 8.3,将基本SDK设置为最新。如果您在项目中使用的符号(类、方法等)仅在比部署目标(iOS 8.3)更新的操作系统中可用,则当您试图构建和运行项目时,Xcode将在该行上显示带有修复的错误消息。

请参阅Swift编程语言书的“控制流”一章中的检查API可用性

可用性检查如下所示:

代码语言:javascript
复制
if #available (iOS 9, *) {
    // use APIs only available on iOS 9 or later
} else {
    // do nothing, don't show feature in UI, etc
}

这些是最基本的。在问题的第二部分,您要寻找的是一种更大规模地处理API可用性的方法。为此,您可以使用Swift 2的可用性特性的另一个特性,即@available属性。您可以将此属性应用于任何符号定义(例如,类),以标记符号的定义需要一定的最低OS版本。

与在使用iOS 9 API的每个地方使用可用性签入不同,您只需对整个类使用@available属性即可。然后,您只需要在使用该类的地方使用可用性检查。例如:

代码语言:javascript
复制
@available(iOS 9, *)
class MyAwesomeiOSNineFeature {
    var myCoolObject = UICooliOSNineThing()
    func doAwesomeStuff() {
        // lots of code that uses iOS 9 stuff, no availability check
    }

    func doOtherStuff() {
        // lots of code that uses iOS 9 stuff, no availability check
    }
}

// In another class that doesn't have an `@available` requirement:
if #available(iOS 9, *) {
    let feature = MyAwesomeiOSNineFeature()
    feature.doAwesomeStuff()
} else {
    // don't show UI for new feature
}
票数 8
EN

Stack Overflow用户

发布于 2015-09-23 03:08:30

在iOS 9上的设备并不意味着它有3d触摸,您应该使用forceTouchCapability属性来确定设备是否有3d触摸,并使代码的某些部分做出适当的反应。

如果您需要知道设备运行的是哪个iOS版本,请查看这条线,您可以使用if - the语句使代码做出适当的反应(比如确保该设备OS版本上确实存在该属性)。

票数 -1
EN

Stack Overflow用户

发布于 2015-09-23 03:10:41

将Build中的"iOS部署目标“设置为8.3,将基本SDK设置为最新的iOS (iOS 9.0)。

您可以在iOS 8支持的类中使用iOS 9代码,只需确保只在iOS 8设备上执行任何iOS 9代码即可。您可以使用respondsToSelector:或[UIDevice currentDevice systemVersion]来帮助您。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32730271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档