我有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
}
有没有办法在类方法中获取类实例(或类名)?
答案 0 :(得分:16)
如果您只想记录它/将其作为一个类,您只需要self
。而已。所以喜欢
+ (void)func {
Class class = self;
NSLog(@"%@ call func", class);
}
或
+ (void)func {
NSLog(@"%@ call func", self);
}
另外,如果您想将名称作为NSString,NSStringFromClass(self)可以让您满意。 (作为char *,class_getName(self)是你正在寻找的)
答案 1 :(得分:3)
要获取当前的类对象,您应该能够:
[self class];
因为self会引用类实例,因为它是一个类方法。 Class是NSObject中定义的方法,它返回对象的类。
编辑以避免混淆......