Ce code dans XCode 6 n'a pas d'erreur mais dans XCode 7 (Swift 2) cette erreur s'est produite:
La méthode ne remplace aucune méthode de sa superclasse
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
}
Lorsque supprimer override
Word, cette erreur s'est produite:
Méthode 'touchesBegan (: withEvent :)' avec le sélecteur Objective-C 'touchesBegan: withEvent:' entre en conflit avec la méthode 'touchesBegan (: withEvent :)' de la superclasse 'UIResponder' avec le même sélecteur Objective-C
Vous obtenez votre première erreur car une grande partie de Cocoa Touch a été auditée pour prendre en charge les génériques Objective-C, ce qui signifie que des éléments tels que des tableaux et des ensembles peuvent maintenant être saisis. À la suite de cela, la signature de cette méthode a changé et puisque ce que vous avez écrit ne correspond plus à cela, vous recevez une erreur expliquant que vous avez marqué une méthode comme override
mais cela ne fonctionne pas ' ne correspond en fait à aucune méthode de la super classe.
Ensuite, lorsque vous supprimez le mot clé override
, l'erreur que vous obtenez est de vous faire savoir que vous avez créé une méthode qui a un sélecteur Objective-C en conflit avec la méthode réelle de touches de début (contrairement à Swift, Objective- C ne prend pas en charge la surcharge de méthode).
En fin de compte, en Swift 2, vos touches ont commencé la substitution devrait ressembler à ceci.
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
// stuff
}
Pour plus d'informations sur la signification des génériques Objective-C pour votre code Swift, je vous suggère de consulter la section Génériques légers dans la version préliminaire de tilisation de Swift avec Cocoa et Objective-C . A partir de maintenant aux pages 33 et 34.
Supprimez simplement le override cela fonctionnera.
func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
}