当我尝试这个时,我得到错误:
class ViewController: UIViewController, UIScrollViewDelegate {
......
}
extension ViewController: UIScrollViewDelegate { // Error: Redundant conformance of 'ViewController' to protocol 'UI
....
}
当我尝试这个时,我没有得到错误:
class ViewController: UIViewController {
......
}
extension ViewController: UIScrollViewDelegate { // No error
...
}
为什么我使用扩展时不会将UIScrollViewDelegate添加到ViewController?
如果类是UIViewController的类型意味着它符合UIScrollViewDelegate?
答案 0 :(得分:1)
在第一个代码示例中,您已经使用类声明添加了对UIScrollViewDelegate
的一致性。
现在,当你尝试再次使用扩展程序符合UIScrollViewDelegate
时,swift会尖叫你。
对于第二个代码示例,在扩展中添加一致性。在添加扩展名之前,该类不符合UIScrollViewDelegate
。
答案 1 :(得分:1)
错误是自我解释。您不必多次符合协议。 你可以做1)
class ViewController: UIViewController, UIScrollViewDelegate {
......
}
或
2)
class ViewController: UIViewController {
......
}
extension ViewController: UIScrollViewDelegate { // No error
...
}
在案例1中,您不需要扩展名,因为类本身采用了协议。 扩展的目的是为类添加更多功能。在案例2中,很明显扩展采用了协议。