假设我有以下标题:
@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,这是不可能的?
谢谢!
答案 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";