Я использую фреймворк, который определяет и использует класс 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" .
Не знаю, как это возможно... Кто-нибудь знает, что я делаю неправильно здесь?
Я нашел аналогичную запись, которая полностью противоположна тому, что я прошу здесь