iOS底层学习-Day_03

问题
对象的isa指针指向哪里?

instance对象的isa指向class对象
class对象的isa指向meta-class对象
meta-class对象的isa指向基类的meta-class对象


OC的类信息存放在哪里?

对象中成员变量的具体值,存放在对象instance
对象方法、属性、成员变量、协议信息,存放在class(类)
类方法,存放在meta-class对象中

窥探struct objc_class的结构

 

对象方法 和 类方法
  • 调用对象方法 : 调用到类方法列表中的的对象方法
  • 当调用对象方法时,通过instance的isa找到class,最后找到对象方法的实现进行调用
LZPerson *person = [[LZPerson alloc] init];
person->_age = 10;
//1.一般调用
[person personInstanceMethod];
//2.rutime本质的调用
objc_msgSend(person, @selector(personInstanceMethod));

 

  • 调用到类中的的类方法 : 调用到元类方法列表中的的类方法
//1.一般调用
[LZPerson personClassMethod];
//2.rutime本质的调用
objc_msgSend([LZPerson class], @selector(personClassMethod))

 

  • 子类的实例对象调用父类的实例对象方法
//1.一般调用
[student personInstanceMethod];
//2.rutime本质的调用
objc_msgSend([LZStudent class], @selector(personInstanceMethod))

 

posted @ 2024-05-08 17:02  时光清浅、  阅读(7)  评论(0)    收藏  举报