错误:“ViewController”与具有扩展名的协议的冗余一致性

时间:2018-01-26 13:15:00

标签: ios swift

当我尝试这个时,我得到错误:

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?

2 个答案:

答案 0 :(得分:1)

在第一个代码示例中,您已经使用类声明添加了对UIScrollViewDelegate的一致性。

现在,当你尝试再次使用扩展程序符合UIScrollViewDelegate时,swift会尖叫你。

对于第二个代码示例,在扩展中添加一致性。在添加扩展名之前,该类不符合UIScrollViewDelegate

答案 1 :(得分:1)

错误是自我解释。您不必多次符合协议。 你可以做1)

class ViewController: UIViewController, UIScrollViewDelegate {
    ......
    }

2)

class ViewController: UIViewController {
            ......
            }


extension ViewController: UIScrollViewDelegate { // No error
            ...
        }

在案例1中,您不需要扩展名,因为类本身采用了协议。 扩展的目的是为类添加更多功能。在案例2中,很明显扩展采用了协议。