I have given the some default implementation code in protocol extension. But how to call this specified code in a class that confirms to the protocol. Here is an example:
class BaseClass {}
protocol ImplementedProtocol {
func printInfo()
}
extension ImplementedProtocol where Self: BaseClass {
func printInfo() {
print("Hello! This is ImplementedProtocol")
}
}
class SuperClass: BaseClass, ImplementedProtocol {
func printInfo() {
// I should do sth here.
print("Hello! This is SuperClass")
}
}
class SubClass: SuperClass {
override func printInfo() {
super.printInfo()
print("This is SubClass")
}
}
let a = SubClass()
a.printInfo() // I get "Here is SuperClass. Here is SubClass."
// But I want "Here is ImplementedProtocol. Here is SuperClass. Here is SubClass."