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

前端之家收集整理的这篇文章主要介绍了如何支持iOs 9功能,同时保持iOs 8的支持?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上问题在于标题.我确信有一种方法可以将您的应用程序发送到早期版本的iO(在本例中为8),同时仍然可以使用较新操作系统版本的独有功能.
例:
我的应用程序对iOs 8.3的最低支持,以及最新版本的iOs 9,我想添加对力触摸的支持(仅在iOs 9中可用),但同时,我希望能够修复bug例如,进行UI改进,并将更新发送到两个版本.
主要的应用程序这样做,例如fb,所以必须有一种方式,但我无法在任何地方找到它,我放弃了:(

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

解决方法

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

首先,将构建设置中的部署目标设置为iOS 8.3,将基础SDK设置为Latest.如果您在项目中使用仅在比部署目标(iOS 8.3)更新的操作系统中可用的符号(类,方法等),Xcode将在您尝试构建时显示错误消息,并在该行上显示修复信息并运行您的项目.

请参阅The Swift Programming Language一书的Control Flow一章中的Checking API Availability.

可用性检查如下所示:

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属性.您可以将此属性应用于任何符号定义(例如,类),以标记符号的定义需要某个最小操作系统版本.

您可以在整个类中使用@available属性,而不是在每个使用iOS 9 API的地方使用可用性检查.然后,您只需要在使用该类的位置使用可用性检查.例如:

@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
}
原文链接:https://www.f2er.com/iOS/335133.html

猜你在找的iOS相关文章