变量(枚举?)在Swift 2中持有两种类型之一

安德鲁·埃宾

UIViewController子类中,需要声明一个名为的变量webView,其类型可以为UIWebViewWKWebView(取决于iOS版本)。

是否有比以下选项之一更好的方法(也许使用枚举?):

  1. 声明类型的变量,UIView然后在每次需要访问它时有条件地强制转换为两种类型
  2. 不是在公共父UIViewController超类中声明变量,而是在两个特定的UIViewController子类中两次声明了特定类型的变量感觉违反了“不要重复自己” / DRY的原则。
马丁·R

您可以定义一个协议,其中包含要在视图上调用的常用方法:

protocol MyWebView {
    // ...
}

然后使这两个UIWebViewWKWebView符合该协议(经由扩展):

extension UIWebView : MyWebView {

}

@available(iOS 8.0, *)
extension WKWebView : MyWebView {

}

现在您可以将实例变量声明为

var webView : MyWebView!

并根据iOS版本对其进行初始化:

if #available(iOS 8, *){
    webView = WKWebView()
} else {
    webView = UIWebView()
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章