我正在使用一个定义和使用“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”方法。
不知道这怎么可能......有人知道我在这里做错了什么吗?
我发现了一个与我在这里问的完全相反的类似帖子