Objective-c:如何在类方法中获取Class实例

时间:2010-06-26 18:16:46

标签: objective-c class-method

我有2个类,Parent和Child,而Parent有一个名为func的类方法。 现在我想在func方法中获取Class实例,以区分哪个类是调用者。

@interface Parent : NSObject
+ (void)func;
@end

@implementation Parent

+ (void)func {
    Class *class = howToGetClass();
    NSLog(@"%@ call func", class);
}

@end

@interface Child : Parent
@end

int main() {
    [Child func];    // call func from Child
}

有没有办法在类方法中获取类实例(或类名)?

2 个答案:

答案 0 :(得分:16)

如果您只想记录它/将其作为一个类,您只需要self。而已。所以喜欢

+ (void)func {
    Class class = self;
    NSLog(@"%@ call func", class);
}

+ (void)func {
    NSLog(@"%@ call func", self);
}

另外,如果您想将名称作为NSString,NSStringFromClass(s​​elf)可以让您满意。 (作为char *,class_getName(self)是你正在寻找的)

答案 1 :(得分:3)

要获取当前的类对象,您应该能够:

[self class];

因为self会引用类实例,因为它是一个类方法。 Class是NSObject中定义的方法,它返回对象的类。

编辑以避免混淆......