У меня есть 2 класса, Родитель и Ребенок, и Родитель имеет метод класса, названный func. Теперь я хочу заставить Экземпляр класса в func методе различать, какой класс является вызывающей стороной.
@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
}
Там какой-либо путь состоит в том, чтобы получить экземпляр класса (или имя класса) в методе класса?
Если вы просто хотите зарегистрировать это / получить как класс, вам просто понадобится self
. Вот и все. Так же, как
+ (void)func {
Class class = self;
NSLog(@"%@ call func", class);
}
или
+ (void)func {
NSLog(@"%@ call func", self);
}
, если вы хотите получить имя как NSString, NSStringFromClass (self) поможет вам. (В качестве символа * class_getName (self) - это то, что вы ищете)
Чтобы получить текущий объект класса, вы должны быть в состоянии сделать:
[self class];
As self будет ссылаться на экземпляр класса, потому что это метод класса. Class - это метод, определенный в NSObject, который возвращает класс для объекта.
Отредактировано, чтобы избежать путаницы...