我正在努力做到这一点,但我遇到了一些麻烦
这是CustomProtocol
protocol CustomProtocol { }
SubCustomProtocol
protocol SubCustomProtocol: CustomProtocol { }
SubCustomProtocolImplementation
class SubCustomProtocolImplementation: SubCustomProtocol { }
这是CustomClass
class CustomClass<P: CustomProtocol> { var customProtocol: P? func doSomething() { } }
SubCustomClass
class SubCustomClass<P: SubCustomProtocol>: CustomSubClass { }
和我的BaseViewController
class BaseViewController<P: CustomProtocol,T: CustomClass<P>>: UIViewController { var foo: T! override func viewDidLoad() { super.viewDidLoad() foo?.doSomething() } }
我的ViewController
class ViewController<P: SubCustomProtocolImplementation,T: SubCustomClass<P>>: BaseViewController<P,T> { override func viewDidLoad() { super.viewDidLoad() } }
在我称之为foo?.doSomething()的行中,它表示’T’不是’CustomClass<'P'>‘的子类型我不知道我做错了什么
在ViewController声明中,它表示“BaseViewController需要
T继承自CustomClass<'P'>“
希望你能帮我!
解决方法
如果要将foo var类型指定为CustomClass< P>你应该这样做.
class ViewController<P: CustomProtocol>: UIViewController { var foo: CustomClass<P>? override func viewDidLoad() { super.viewDidLoad() foo?.doSomething() } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。