加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

声明符合Swift 2协议的UIView类型的变量

发布时间:2020-12-14 02:29:10 所属栏目:百科 来源:网络整理
导读:我需要声明一个UIView类型的变量,它也符合MyProtocol: protocol MyProtocol: class { func foobar()}class MyClass { var myView: UIViewMyProtocol! // Error: Cannot specialize non-generic type 'UIView'} 但是我得到了编译错误:无法专门化非泛型类型
我需要声明一个UIView类型的变量,它也符合MyProtocol:
protocol MyProtocol: class {
    func foobar()
}

class MyClass {
    var myView: UIView<MyProtocol>! // Error: Cannot specialize non-generic type 'UIView'
}

但是我得到了编译错误:无法专门化非泛型类型’UIView’.

我需要从UIView和MyProtocol访问变量的方法.

支持这些要求的正确变量声明是什么?

如果它有任何区别,只有UIView子类才会实现该协议.目前,我通过扩展添加协议一致性.

我找到了这个答案:https://stackoverflow.com/a/25771265/233602但不清楚在Swift 2中写这个答案是否仍然是最好的选择.

使您的类成为通用类,如下所示,
protocol MyProtocol: class {
    func foobar()
}

class MyClass<T:MyProtocol where T:UIView> {
    var myView: T!
}

上面的错误说UIView不能专门用于协议MyProtocol,因此,这里的解决方案是使你的类成为一个泛型类,它接受符合MyProtocol的泛型参数,并且是UIView的子类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读