Скажем, у меня есть следующие заголовки:OBJ-C - Получение имени класса из иерархии классов
@interface SuperClass : NSObject
@interface SubClass : SuperClass
Я alloc'ing экземпляр класса, выполнив:
SubClass *sc = [[SubClass alloc] init];
В моем SuperClass.m:
- (id) init
{
self = [super init];
if (self != nil)
{
NSString *cString = NSStringFromClass([self class]);
}
return self;
}
Простой, не так ли? Мой вопрос: как я могу заставить cString вернуть класс SuperClass, а не класс SubClass? Поскольку SubClass является alloc'd/init'd, это невозможно?
Спасибо!
Существует множество способов сделать это, причем простейшим из предложений Карла является то, что если вы всегда хотите одну и ту же строку, просто используйте статическую строку. Если есть какая-то более глубокая проблема, которую вы хотите решить здесь, возможно, было бы хорошо, если мы будем в ней участвовать, чтобы мы могли предложить лучшие предложения о том, как это сделать. – Chuck
Согласитесь с Чак. Я не могу придумать причину, по которой вам когда-либо понадобилось знать имя суперкласса. Возможно, есть лучший способ сделать то, что вы хотите. – JeremyP