我寻求帮助来理解为什么代码表现如此奇怪。我有什么: BaseClass : NSManagedObject
和 ChildClass : BaseClass
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];
。在 BaseClass (Category) 实现控制台中读取 self = (Class)ChildClass
,但执行流程仍然跳过 if
并直接传递给 return nil;
出于某种原因,这超出了我的理解。有什么建议为什么会这样吗?感谢所有答案。谢谢。
...因为我没有足够的代表点数,所以我不会发布屏幕截图。希望我说清楚了。
最佳答案
你在一个静态方法中,所以 self 代表类本身。足以做到这一点:
if (self==[ChildClass class]) {
do stuff
return resultArray;
}
关于Objective-C if ([self isKindOfClass : . .. ]) 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14864103/