我寻求帮助来理解为什么代码的行为如此奇怪。我拥有的:BaseClass : NSManagedObjectChildClass : BaseClass
基类有一个类别。.h:。

@interface BaseClass (Category)

+ (NSArray)method;

@end

.M:。
@implementation BaseClass (Category)

+ (NSArray *)method
{
    if ([self isKindOfClass:[ChildClass class]) {
        do stuff
        return resultArray;
    }
    return nil;
}

从项目的另一个地方我称之为*array = [ChildClass method];。在基类(category)中,实现控制台读取self = (Class)ChildClass,但由于某些原因,执行流仍然跳过if,直接传递到return nil;,这超出了我的理解范围。有什么建议吗?感谢您的回答。谢谢。
…由于我没有足够的代表点,我没有张贴截图。希望我明白了。

最佳答案

你处于静态方法,所以自我代表类本身。足以做到这一点:

if (self==[ChildClass class]) {
    do stuff
    return resultArray;
}

09-10 07:29
查看更多