主要是这个图片里的内容:
在执行Student *s = [[Student alloc] init];
优先调用 Student中的init方法 在执行至 if(self = [super init])时 转到调用Person的init方法
执行至 Person类的init方法至 if(self = [super init])时 转到调用NSObject的init方法
执行至NSObject的init方法至 isa = [ X class];时(X谁调用他 X就表示那个类)
我的问题:
这几步中 是谁调用了NSObject ,Student只能通过调用Person类来调用NSObject 类吧 也就是说最后的isa的值应该是Person吧 (老师讲的是Student)Student只是调用了Person类,并没有直接调用NSObject吧
我的理解:Student是继承自Person类 那么由于Student类中并未对isa进行重新赋值 那么他的isa的值应该是跟 Person的相同吧! Person由于是自己调用的NSObject中的init 所以isa理应指向Person类啊
可能我的理解存在某些误区 还请各位指正!
|