我正在使用一个定义了并使用了'ClassA'的框架,'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'方法。
我不确定这怎么可能... 有人知道我在这里做错了什么吗?
我找到了一个类似的帖子,正好与我要问的相反 这里