Tutorial :Objective-c: How can I get Class instance in class method



Question:

I have 2 classes, Parent and Child, and Parent has a class method named func. Now I want to get Class instance in func method to distinguish which class is caller.

@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  }  

Is there any way to get class instance (or class name) in class method?


Solution:1

If you just want to log it/get it as a Class, you just need self. Thats it. So like

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

or

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

also, if you want to get the name as an NSString, NSStringFromClass(self) has you covered. (As a char *, class_getName(self) is what you're looking for)


Solution:2

To get the current class object, you should be able to do:

[self class];  

As self will refer to the class instance, because it's a class method. Class is a method defined in NSObject, which returns the class for the object.

Edited to avoid confusion...


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »