我是新手,我似乎在这上面遇到了多个错误。 我想要的只是一个for或while循环来打印出某个Class的所有超类。
这是我想要的伪代码:
IDontKnowWhatClass *superClassName;
while (superClassName != nil)
{
superClassName = [[superClassName class] superclass];
NSLog(print the name);
}
答案 0 :(得分:1)
使用NSObject方法名称:
objc_property_t class_getProperty(Class cls, const char *name)
//Returns a property with a given name of a given class.
继续寻找,直到你得到NSObject,因为它是最高级的
使用此方法检查是否相等:
- (BOOL)isEqual:(id)object;
或
[object isKindOfClass:[SomeClass class]]
这将有效
答案 1 :(得分:1)
您可以在当前类上调用superclass
方法,直到它等于Nil(对于根类,即NSObject
)。
Class c = [IDontKnowWhatClass class];
while (c)
{
NSLog(@"%@", NSStringFromClass(c));
c = [c superclass];
}
答案 2 :(得分:1)
NSString* classString = @"IDontKnowWhatClass";
Class class = NSClassFromString(classString);
while (class != nil){
NSLog(@"%@", [class description]);
class = [class superclass];
}
答案 3 :(得分:1)
试试这个
Class superClassName = [self class];
while (superClassName != nil)
{
superClassName = [superClassName superclass];
NSLog(@"%@",NSStringFromClass(superClassName));
}
如果你知道一个类本身就像NSString
那样,
Class superClassName = [NSString class];
您可以将类名存储为类似
的字符串NSString *className = NSStringFromClass(superClassName);
如果你想创建一个类的对象,其类名存储在类似
的字符串中id object = [[NSClassFromString(className) alloc] init];