我正在努力做到这一点,但我遇到了一些麻烦
这是CustomProtocol
protocol CustomProtocol {
}
Run Code Online (Sandbox Code Playgroud)
SubCustomProtocol
protocol SubCustomProtocol: CustomProtocol {
}
Run Code Online (Sandbox Code Playgroud)
SubCustomProtocolImplementation
class SubCustomProtocolImplementation: SubCustomProtocol {
}
Run Code Online (Sandbox Code Playgroud)
这是CustomClass
class CustomClass<P: CustomProtocol> {
var customProtocol: P?
func doSomething() {
}
}
Run Code Online (Sandbox Code Playgroud)
SubCustomClass
class SubCustomClass<P: SubCustomProtocol>: CustomSubClass {
}
Run Code Online (Sandbox Code Playgroud)
和我的BaseViewController
class BaseViewController<P: CustomProtocol, T: CustomClass<P>>: UIViewController {
var foo: T!
override func viewDidLoad() {
super.viewDidLoad()
foo?.doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
我的ViewController
class ViewController<P: SubCustomProtocolImplementation, T: SubCustomClass<P>>: BaseViewController<P,T> {
override func viewDidLoad() {
super.viewDidLoad()
}
}
Run Code Online (Sandbox Code Playgroud)
在我称之为foo?.doSomething()的行中,它说'T'不是'CustomClass <'P'>'的子类型,我不知道我做错了什么
在ViewController声明中,它说"BaseViewController要求T继承自CustomClass <'P'>"
希望你能帮我!