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

声明符合Swift 2协议的UIView类型的变量,第1张

概述我需要声明一个UIView类型的变量,它也符合MyProtocol: protocol MyProtocol: class { func foobar()}class MyClass { var myView: UIView<MyProtocol>! // 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的子类.

总结

以上是内存溢出为你收集整理的声明符合Swift 2协议的UIView类型的变量全部内容,希望文章能够帮你解决声明符合Swift 2协议的UIView类型的变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1089949.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存