在swift中禁用“仅适用于iOS 11.0或更高版本”?

时间:2018-06-01 07:55:05

标签: ios swift macros availability

问题是我想检查一个需要在类中声明的变量的解决方案。但如果我这样做,我应该将整个班级标记为@available(iOS 11.0, *),这会在许多其他地方引起很多变化。

那么最多可以在一个地方完全禁用它吗?或者暂时禁用它(只是为了测试新功能而不进行重大更改而不更改最低iOS版本)?

1 个答案:

答案 0 :(得分:2)

我找到的最佳解决方案是使用属性:

class SomeClass {
    private var _authSession: NSObject!;
    @available(iOS 11.0, *)
    var authSession: SFAuthenticationSession! {
        get {
            return _authSession as! SFAuthenticationSession
        }
        set(val) {
            _authSession = val
        }
    }
}

这只是一个示例,因此如果有必要,!可以替换为?。简而言之 - iOS禁止使用@available声明变量,但允许使用此宏标记属性。