我寻求帮助来理解为什么代码的行为如此奇怪。我拥有的:BaseClass : NSManagedObject
和ChildClass : 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;
}