
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
EmoticonEmoticon