A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.》两指针所在的类:isa指针 和 SEL指针 是属于NSObject基类。

》类的本质:即是一个结构体。


2.当创建一个类后:

》创建对象:类 * p = [类 new] ;

》在创建一个对象之前,在堆内存中就先存在了一个该类的类类型对象,其中有一个SEL指针就是指向在代码区内该类的第一个方法。

》定义一个对对象之后,在堆内存中创建了一个该类的对象,该对象包含了一个isa指针的成员变量(第一个属性),isa指针则指向在堆里面存在的类类型对象, 在栈内存里创建了一个该类的指针p,p指针指向的是isa地址。


3.当执行[p 方法] 时:

》当p调用该类的一个方法时,首先通过p找到isa指针,再通过isa指针找到类类型对象,当在堆内存中找到类类型对象后,首次调用该类的方法时,用while(SEL == 方法地址) 找到该方法,这样就完成了一次方法的调用。当下一次该对象调用同一个方法时,直接在缓存中找到。



1 个回复

倒序浏览
指针是一个比较难得的一课 要好好学习啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马