gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:28 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

protocol MyWebView {
// ...
}

然后让 UIWebViewWKWebView 都符合那个协议(protocol)(通过扩展):

extension UIWebView : MyWebView {

}

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

}

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

var webView : MyWebView!

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

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

关于swift - 变量(枚举?)在 Swift 2 中持有两种类型之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33076426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com