黑马程序员技术交流社区

标题: 类的本质与isa指针及SEL指针的关系 [打印本页]

作者: Two_Lights    时间: 2016-1-8 01:42
标题: 类的本质与isa指针及SEL指针的关系

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

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


2.当创建一个类后:

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

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

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


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

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




作者: 杨拓磊    时间: 2016-2-21 23:51
指针是一个比较难得的一课 要好好学习啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2