Я использую фреймворк, который определяет и использует ClassA, подкласс NSObject. Я хотел бы добавить некоторые переменные и функциональность, поэтому, естественно, я создал «ClassB», подкласс «ClassA»
Теперь моя проблема заключается в следующем. Многие из методов в этой среде возвращают экземпляры ClassA, которые я хотел бы привести к своему подклассу.
Например, возьмите этот метод:
- (ClassA *)doSomethingCool:(int)howCool
Теперь в моем коде я пытаюсь это:
ClassB * objB;
objB = (ClassB *)doSomethingCool(10);
NSLog(@"objB className = %@", [objB className]);
Это работает просто отлично. Нет ошибок компиляции или выполнения или чего-либо еще. Но что действительно странно для меня, так это вывод:
>> "objB className = ClassA"
Кастинг явно не удался. Не уверен, что произошло в этот момент ... objB напечатано как 'ClassB', но его className - это 'ClassA', и он не будет отвечать ни на какие методы 'ClassB'.
Не уверен, как это возможно ... Кто-нибудь знает, что я здесь не так делаю?
Я нашел похожий пост, который полностью противоположен тому, что я спрашиваю здесь