Ich möchte init(coder aDecoder: NSCoder!)
in einer Oberklasse implementieren und sie in allen Unterklassen verwenden, indem ich zur Laufzeit eine Klassenmethode für die bestimmte Unterklasse in der Oberklasse aufruft.
Ist es möglich, dass Unterklassen von MySuperClass
zur Laufzeit auf die Klassenfunktion dummyDict()
zugreifen?
Ich glaube, ich habe verstanden, was Sie meinen. Sie erstellen eine Klasse Base
, die einen Initialisierer und eine (statische) Klassenfunktion implementiert:
Als Nächstes möchten Sie Unterklassen erstellen und über den Initialisierer eine überschriebene Version der Methode dummyDict
aufrufen. Sie müssen diese Methode einfach überschreiben:
Wenn Sie nun eine Instanz von Subclass1
erstellen, wird Folgendes gedruckt:
was die erwartete Ausgabe ist.
Beachten Sie, dass die for
-Schleife im Initialisierer self.dynamicType.dummyDict()
anstatt Base.dummyDict()
verwendet. Letzterer ruft immer die Klassenmethode auf, die in der Klasse Base
definiert ist, während die erste Klasse sie im Bereich der tatsächlichen Klasse aufruft, die von Base
dynamicType ist in Swift 3 veraltet. Wir müssen type(of:)
verwenden.
So Antonio Beispiel ist jetzt:
%Vor%