web-dev-qa-db-fra.com

Swift protocoles: la méthode ne remplace aucune méthode de sa superclasse

Depuis que Xcode 6 a encore beaucoup de bugs avec Swift, je ne suis pas sûr que ce soit ou je manque quelque chose. Ma classe adopte le protocole NSLayoutManagerDelegate. Mais il semble impossible de remplacer la méthode dont j'ai besoin. Je fais comme décrit la documentation:

override func layoutManager(_ aLayoutManager: NSLayoutManager!,
        didCompleteLayoutForTextContainer aTextContainer: NSTextContainer!,
        atEnd flag: Bool) {

    }

Mais je reçois une erreur ici: méthode ne remplace aucune méthode de sa super-classe. Que devrais-je faire?

43
Vitaliy Vashchenko

Vous implémentez une méthode du protocole, oui, mais ce n'est pas une substitution. Supprimez simplement le mot clé override. Un remplacement survient lorsque votre superclasse implémente également cette méthode et que vous fournissez une version qui remplace ou modifie le comportement de l'implémentation de la superclasse. Ce n'est pas ce qui se passe ici.

95
Ken Thomases