是否可以在Swift中仅为特定的iOS版本定义变量?在班级

时间:2016-04-23 02:18:45

标签: ios swift

是否可以在对象的Class级别上实现此目的?特别关注这个有一个包含WatchConnectivity的应用程序,但也支持iOS8

class Test {
    if #available(iOS 9, *) {
        let session: WCSession ......
    }
}

2 个答案:

答案 0 :(得分:5)

您可以使用计算的static属性:

public class Example {  
  public static var answerToEverything: Int {
    if #available(iOS 9, *) {
      return 42
    } else {
      return 0
    }
  }
}

或者,您可以考虑使用@available属性:

public class Example {
  @available(iOS, introduced=1.0)
  public static var answerToEverything: Int = 42
}

其中1.0您的图书馆(不是iOS)的版本。

如果您更关心确保在iOS 上使用而不太关心iOS版本,这将非常有用。

答案 1 :(得分:1)

您可以使用计算属性将其包装起来,例如UIMenu

@available(iOS 13.0, *)
var menu: UIMenu? { // use this as a getter for what you want
   return _menu as? UIMenu
}
var _menu: Any? // use this reference as a setter for what you want