Ich versuche doppelten Code in verschiedenen -(id)init
Aromen einer Klasse zu vermeiden, das heißt init
, initWithFrame
, initWithCoder
usw. durch eine private Methode definiert, die commonConstruct
gestattet.Objective-C: Wie vermeidet man unbeabsichtigte Aufrufe an private Superklassen-Methoden mit identischem Namen?
Diese Methode führt das schwere Heben von allen init-Methodenaromen durch und wird vom init
-Konstruktor aufgerufen.
Das Problem, das ich jetzt habe, ist, dass Klassen in abgeleitet sind, die gleichen Namens Konvektion für den initializer Helfer („commonConstruct“) die Basisklasse commonConstruct
ist die abgeleitete Klasse verwendet nennen, obwohl es invisible
, dh in der .m
Datei deklariert nicht in der Datei .h
.
Die Laufzeit findet jedoch das überladene commonConstruct und führt das statt seiner eigenen Elementfunktion aus.
Gibt es eine andere Möglichkeit als einen anderen Namen für den Initialisiererhelfer in jeder Unterklasse zu verwenden?
Mit anderen Worten: Gibt es eine Möglichkeit, Objective-C
Mitgliedsfunktionen zu machen, die "nicht virtuell" sind, d. H. Keine späte (Laufzeit), aber Kompilierungszeitbindung haben?
wo ist 'commonConstruct' definiert? –
commonConstruct ist in jeder Klasse @Implementation-Abschnitt definiert –