John
John

Reputation: 695

Error: Redundant conformance of 'ViewController' to protocol with extension

When I try this I get error:

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

extension ViewController: UIScrollViewDelegate { // Error: Redundant conformance of 'ViewController' to protocol 'UI
    ....
}

When I try this I don't get error:

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

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

Why do I not add UIScrollViewDelegate to ViewController when I use extension?

If a class is type of UIViewController means it conforms to UIScrollViewDelegate ?

Upvotes: 3

Views: 6118

Answers (2)

ArunGJ
ArunGJ

Reputation: 2683

The error is self-explaining. You don't have to conform to a protocol multiple times. You can either do 1)

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

or

2)

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


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

In case 1, you don't need an extension because the class itself adopts the protocol. The purpose of the extension is to add more functionality to the class. In case 2, it is clear that the extension adopts to the protocol.

Upvotes: 1

Sam
Sam

Reputation: 639

In the first code sample, you've already added conformance to UIScrollViewDelegate with the class declaration.

Now, when you try to conform to UIScrollViewDelegate again with the extension, swift screams at you.

For the second code sample the conformance is added in the extension. The class did not conform to UIScrollViewDelegate before the extension was added.

Upvotes: 6

Related Questions