欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OC----类加载

程序员文章站 2022-03-09 20:03:33
...
在执行时, Student *stu1 = [Student new] 会作类加载,
加载项有: 
    1. Student 自己定义的属性,方法
    2. Person  类(_name, - (void)say...)
    3. NSObject 类(isa, description,..)
所有子类对象中有自己的属性,方法,与所有父类的属性,方法
 
[stu1 say] 执行的顺序是: 通过stu1 指针(栈)找到对象 -> Student 的isa(堆) -> Student(代码段)中 - (void)say
 
代码段中的每一个类都有一个叫做isa 的指针,这个指针指向它的父类,一直指到NSObject.
[stu1 say];  //假设stu1是Person对象.
1. 先根据stu1 指针找到stu1 指向的对象,然后根据对象的isa 指针找到Person 类.
2. 搜索Person 类中是否有这个say 方法 如果有执行
3. 如果没有 就根据类的isa 指针找父类, NSObject 中如果没有就报错.
相关标签: OC