OBJ-C - 从类层次结构中获取类名

时间:2010-06-08 23:05:52

标签: objective-c cocoa

假设我有以下标题:

@interface SuperClass  : NSObject

@interface SubClass : SuperClass

我通过执行以下方式分配类的实例:

 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,这是不可能的?

谢谢!

2 个答案:

答案 0 :(得分:5)

如果你总想得到超级班,

- (id) init
{
    self = [super init];
    if (self)
    {
        NSString *cString = NSStringFromClass([self superclass]);
    }
    return self;
}

如果您alloc + init是一个SubClass,那么cString将包含“SuperClass”,但是,如果您alloc + init是一个SuperClass,那么cString将包含“NSObject”。

答案 1 :(得分:0)

如果你总是希望出现相同的字符串,为什么不只是:

NSString *classString = @"SuperClass";