Je rencontrais un problème avec la méthode d'une sous-classe qui se faisait appeler pour remplacer une méthode, donc j'ai créé une petite application pour la tester. Lorsque la superclasse appelle une méthode que sa sous-classe écrase, la version de la méthode de la superclasse est appelée à la place de la version de la sous-classe, qui remplace la méthode de la superclasse et devrait être la méthode appelée.Swift appelant la méthode substituée de la sous-classe à partir de la superclasse
Résultats attendus: sub foo
sortie actuelle: super foo
superclasse:
class ViewController: UIViewController
{
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
foo()
}
func foo()
{
println("super foo")
}
}
Sous-classe:
class SubclassViewController: ViewController
{
override func foo()
{
println("sub foo")
}
}
Quelle est la classe de l'objet sur lequel touchesBegan est appelé? Est-ce SubclassViewController ou est-ce ViewController? –
Wow, je me sens stupide. Je n'ai jamais changé le contrôleur de vue initial dans le storyboard pour être un SubclassViewController. Merci. Mettez votre commentaire en réponse. – Aderis
Je suis en train de voir ce problème avec des sélecteurs dans une superclasse, ios 10, Xcode 8 – MobileMon