NSObject的class方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @interface MViewStage : UIViewController
@end
@implementation MViewStage
- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"self.class = %@",[self class]); NSLog(@"super.class = %@",[self class]); NSLog(@"self.superClass = %@",[self superclass]); }
@end
|
如图所示,我想打印出继承自UIViewController的一个子类MViewStage,打印出self.class,super.class,self.superClass,这三个的值,按照之前的认知,第一个和最后一个毋庸置疑,分别是,MViewStage和UIViewController,只有第二个,super,我认为要打印的是super的class,应该是UIViewController。但是打印结果如下:
1 2 3
| 2016-07-18 13:35:36.139 RunTimeLearning[6892:79426] self.class = MViewStage 2016-07-18 13:35:36.139 RunTimeLearning[6892:79426] super.class = MViewStage 2016-07-18 13:35:36.139 RunTimeLearning[6892:79426] self.superClass = UIViewController
|
很明显super.class打印出的内容是当前对象的类MViewStage。
!!!为什么呢?
API中查看可以看到如下描述信息:
1 2 3 4 5
| - (Class)class Description Returns the class object for the receiver’s class. The class object for the receiver’s class.
|
可以看出,class返回的类是当前selector的接受者,上例所述的MViewStage的对象,因此返回类型为MViewStage。