Objective-C if ([self isKindOfClass : . .. ]) 静态方法

标签 objective-c categories static-methods

我寻求帮助来理解为什么代码表现如此奇怪。我有什么: BaseClass : NSManagedObjectChildClass : 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/

相关文章:

ios - MBProgressHUD 更改动画类型

ios - 将 NSManagedObject 属性的字符串值传递给新的 View Controller

objective-c - Doxygen 和 Objective-C 类别

Laravel - 子类别显示在主要类别下

c++ - 使用声明不能引用类成员

ios - animateWithDuration 在 vi​​ewWillAppear ios 9 objective-c 中不起作用

objective-c - objective-c : fix distance between images in touches moved

objective-c - 以编程方式调整 NSArray 的大小

java - 奇怪的构造,java将静态方法转换为类

c++ - 私有(private)静态成员函数有什么用?