Schnelle Aufruf-Klassenfunktion von der entsprechenden Unterklasse in der Oberklassenfunktion

8

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.

MySuperClass

%Vor%

Ist es möglich, dass Unterklassen von MySuperClass zur Laufzeit auf die Klassenfunktion dummyDict() zugreifen?

    
the_critic 12.07.2014, 09:20
quelle

3 Antworten

15

Ich glaube, ich habe verstanden, was Sie meinen. Sie erstellen eine Klasse Base , die einen Initialisierer und eine (statische) Klassenfunktion implementiert:

%Vor%

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:

%Vor%

Wenn Sie nun eine Instanz von Subclass1 erstellen, wird Folgendes gedruckt:

%Vor%

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

geerbt wurde     
Antonio 12.07.2014, 09:48
quelle
5

dynamicType ist in Swift 3 veraltet. Wir müssen type(of:) verwenden.

So Antonio Beispiel ist jetzt:

%Vor%     
Nicolas Buquet 20.10.2016 16:01
quelle
-2

[GELÖSCHT]

Verwenden Sie dynamicType , wie Antonio in seiner Antwort vorgeschlagen hat

%Vor%     
Daij-Djan 12.07.2014 09:34
quelle

Tags und Links