obj-c编程01[扩展学习01]:对象消息机制工作原理
来源:互联网 发布:不会开淘宝店 编辑:程序博客网 时间:2024/05/16 18:14
obj-c中的类就像C语言中的struct。NSObject类声明一个成员变量isa,因为NSObject类是整个继承树的根,所以每个类中都有一个isa其指向创建的对象。在类结构中有实例变量(成员变量)和其类型以及类中方法的实现,并且每个类都有一个指针指向其父类:
类中的方法通过选择器(selector)索引,选择器是SEL类型。类中每一个方法名字都映射成一个唯一的int值,例如方法addObject可能映射成整数12.作为obj-c数据结构的一部分,存在一个表,它将方法的名字映射到它们的选择器内,如下图:
在编译时,只要有消息产生编译器就查找选择器类来寻找方法,因此代码:
[ary addObject:obj_a];
被转换为(假设选择器映射表中addObject值为12)如下形式:
objc_msgsend(ary,12,obj_a);
在这里,objc_msgsend函数使用ary对象中的isa指针获得它的类结构,查找值与12相关联的函数。如果没有找到函数,则可以追踪指针至其父类。然后依次到父类的父类等等,最后到达树的顶端,如果此时仍然没有发现该函数,则抛出一个异常。
0 0
- obj-c编程01[扩展学习01]:对象消息机制工作原理
- Object-C 消息机制工作原理
- [Objective-C]消息机制工作原理
- obj-c编程01:第一个类和对象的范例
- obj-c编程12:复制对象
- obj-c编程19:关联对象
- Hanlder消息传递机制及其工作原理
- 消息机制工作原理(isa指针)
- Android消息机制---MessageQueue的工作原理
- Android消息机制---Looper工作原理
- Android消息机制---Handler工作原理
- OBJ-C类和对象学习笔记
- Objective-C的消息(message)工作机制
- Objective-C的消息(message)工作机制
- Obj-c面向对象
- Objective-C消息机制的原理
- Objective-C消息机制的原理
- Objective-C消息机制的原理
- wikioi逃跑的拉尔夫c++
- java中异常的小探讨
- change Network settings (IP Address, DNS, WINS, Host Name) with code in C#
- vs2008 安装异常解决办法
- 如何在Mac上开发Android应用(原创,给刚接触android和mac的新人)
- obj-c编程01[扩展学习01]:对象消息机制工作原理
- wikioi拦截导弹c++
- SwitchNetConfig - Laptop users, quickly switch network and proxy configuration in different places
- wikioi乌龟棋c
- wikioi石子归并c++
- wikioi明明的随机数pascal
- Python程序打包成exe
- wikioi能量项链c
- android JNI调用百度地图API,.so文件总是被自动删除的问题