您想要做的是以下内容:
protocol MyProtocol{
var myVar: NSString { get }
func myMethod()
}
protocol MyProtocol2{
var myVar2: NSString { get }
func myMethod2()
}
extension MyProtocol where Self: MyProtocol2 {
func myMethod() {
print("I'm printing ")
}
}
class anotherClass: MyProtocol, MyProtocol2 {
var myVar: NSString {
return "Yo"
}
var myVar2: NSString {
return "Yo2"
}
func myMethod2() {
print("I'm printing in myMethod2")
}
}
在上面的代码中 MyProtocol2 相当于你的 UIScrollViewDelegate,
因此你要做的是:
protocol MyProtocol{
var myVar: NSString { get }
func myMethod()
}
extension MyProtocol where Self: UIScrollViewDelegate {
func myMethod() {
print("I'm printing")
}
}
class anotherClass: NSObject, MyProtocol, UIScrollViewDelegate {
var myVar: NSString {
return "Yo"
}
}
注意另一个类子类NSObject,这是因为如果你不这样做,你会得到错误
anotherClass
不符合协议NSObjectProtocol
这个错误是因为UIScrollViewDelegate
它本身被定义为扩展NSObjectProtocol
,这是一个由 NSObject 实现的 Objective-C 协议。
所以让你的类继承自 NSObject 以符合 NSObjectProtocol。Vanilla Swift 类没有。