Цель-c: Как я могу получить Экземпляр класса в методе класса

У меня есть 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
}

Там какой-либо путь состоит в том, чтобы получить экземпляр класса (или имя класса) в методе класса?

6
задан taichino 26 June 2010 в 18:16
поделиться

2 ответа

Если вы просто хотите зарегистрировать это / получить как класс, вам просто понадобится self . Вот и все. Так же, как

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

или

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

, если вы хотите получить имя как NSString, NSStringFromClass (self) поможет вам. (В качестве символа * class_getName (self) - это то, что вы ищете)

16
ответ дан 8 December 2019 в 12:18
поделиться

Чтобы получить текущий объект класса, вы должны быть в состоянии сделать:

[self class];

As self будет ссылаться на экземпляр класса, потому что это метод класса. Class - это метод, определенный в NSObject, который возвращает класс для объекта.

Отредактировано, чтобы избежать путаницы...

3
ответ дан 8 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: