获取类名,父类名以及判断对象是否是元类
//The name of the class, or the empty string if cls is Nil.
//返回class的名字,如果class是Nil则返回空值
class_getName
//The superclass of the class, or Nil if cls is a root class, or Nil if cls is Nil.
//返回一个类的父类。
class_getSuperclass
//YES if cls is a metaclass, NO if cls is a non-meta class, NO if cls is Nil.
//返回一个布尔值,表示一个类对象是否是一个元类。
class_isMetaClass
NSString *str = [NSString new];
NSLog(@"class name:%s",class_getName(str.class));
NSLog(@"class name:%s",class_getName(self.class));
NSLog(@"super class name:%@",class_getSuperclass(self.class));
NSLog(@"class name:%@",class_isMetaClass(self.class)?@"yes":@"no");
NSLog(@"class name:%@",class_isMetaClass(str.class)?@"yes":@"no");
输出:
2017-03-09 11:17:29.698020 Runtime[1414:528353] class name:__NSCFConstantString
2017-03-09 11:17:30.596969 Runtime[1414:528353] class name:ViewController
2017-03-09 11:17:33.326785 Runtime[1414:528353] super class name:UIViewController
2017-03-09 11:17:36.079774 Runtime[1414:528353] class name:no
2017-03-09 11:17:37.400009 Runtime[1414:528353] class name:no