特定iOS版本的Swift扩展

时间:2017-04-11 08:44:52

标签: ios swift

我需要为我的类创建依赖于iOS版本的自定义扩展。

所以,例如:

@available(iOS 10.0, *)
extension Foo {
    func test() {
        print("do something for iOS 10.0 and later")
    }
}

如果我要在9.0(包含)和10.0(不包括)之间执行测试,该怎么办?

1 个答案:

答案 0 :(得分:0)

我很感激你提出这个问题。

@available #available 的工作方式类似,因为您指定了要定位的iOS版本,然后Xcode处理其余部分。例如:

@available(iOS 9, *)
func iOS9Work() {
    // do stuff
}

如果您的部署目标是iOS 8,则无法先进行某些可用性检查,因此无法调用该iOS9Work()方法。如果需要,您可以叠加这些检查,例如:

//You need to perform this check before calling
if #available(iOS 9, *) {
    iOS9Work()
}

@available(iOS 9, *)
func iOS9Work() {
  // do stuff
}

在你的情况下,你必须这样打电话:

 if #available(iOS 10, *) {
        Foo()
    }

了解更多信息:Availability Checking in Swift