我需要声明一个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的子类.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。