Ich benutze ein Framework, das 'ClassA' definiert und verwendet, eine Unterklasse von NSObject. Ich möchte einige Variablen und Funktionalität hinzufügen, also habe ich natürlich 'ClassB', eine Unterklasse von 'ClassA' erstelltWie man 'Klasse A' in seine Unterklasse 'Klasse B' umsetzt - Objective-C
Jetzt ist mein Problem das. Viele der Methoden in diesem Framework geben Instanzen von 'ClassA' zurück, die ich in meine Unterklasse umwandeln möchte.
Zum Beispiel nimmt diese Methode:
- (ClassA *)doSomethingCool:(int)howCool
Jetzt in meinem Code ich versuche dies:
ClassB * objB;
objB = (ClassB *)doSomethingCool(10);
NSLog(@"objB className = %@", [objB className]);
Das läuft ganz gut. Keine Kompilier- oder Laufzeitfehler oder irgendetwas. Aber was ist wirklich seltsam für mich ist die Ausgabe:
>> "objB className = ClassA"
Das Casting offensichtlich fehlgeschlagen. Nicht sicher, was zu diesem Zeitpunkt passiert ist ... objB wird als 'ClassB' eingegeben, aber es ist className 'ClassA' und es wird nicht auf 'ClassB' Methoden reagieren.
Nicht sicher, wie das möglich ist ... Wer weiß, was ich hier falsch mache?
fand ich eine ähnliche Position, die von genau das Gegenteil, was ich frage here
Können Sie zeigen, wie Sie ClassB in doSomethingCOol erstellt haben? – stefanB