我正在尝试做这件事情,但遇到了一些问题
这是自定义协议(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 {
}
And my BaseViewController
class BaseViewController<P: CustomProtocol, T: CustomClass<P>>: UIViewController {
var foo: T!
override func viewDidLoad() {
super.viewDidLoad()
foo?.doSomething()
}
}
我的视图控制器
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'>”。
希望我能帮到你!