NSObject のサブクラスである「ClassA」を定義して使用するフレームワークを使用しています。いくつかの変数と機能を追加したいので、当然、「ClassA」のサブクラスである「ClassB」を作成しました
今私の問題はこれです。このフレームワーク内のメソッドの多くは、サブクラスにキャストしたい「ClassA」のインスタンスを返します。
たとえば、次の方法を使用します。
- (ClassA *)doSomethingCool:(int)howCool
今私のコードで私はこれを試します:
ClassB * objB;
objB = (ClassB *)doSomethingCool(10);
NSLog(@"objB className = %@", [objB className]);
これは問題なく動作します。コンパイル エラーや実行時エラーなどはありません。しかし、私にとって本当に奇妙なのは出力です:
>> "objB className = ClassA"
キャスティングは明らかに失敗しました。この時点で何が起こったのかわかりません... objB は「ClassB」と入力されていますが、className は「ClassA」であり、「ClassB」メソッドには応答しません。
これがどのように可能かわかりません...私がここで間違っていることを知っている人はいますか?
ここで求めているものとは正反対の同様の投稿を見つけました