objective-c 继承机制 (从runtime的角度)
来源:互联网 发布:看不见的客人 知乎 编辑:程序博客网 时间:2024/06/10 09:25
继承是面向对象的语言一个非常重要的特性,Objective-c(下面简称OC)也不例外,支持继承机制,(当然多继承除外)
但是,一个以c为基础的语言是如何实现继承的呢?这边文章从runtime的角度去分析下这个问题。runtime是OC的一个非常重要的特性,它把一些很重要的决定(对象类型,函数的执行等)从编译期推迟到运行时,从而能实现很多的动态特性。
其中,runtime的一个很重要的基础是一个叫dispatch table的结构。每个OC对象在创建的时候都有一个叫 isa 的指针指向该对象的class struct。class struct主要由两部分组成,一个是一个指向该类的父类的指针,一个是该类的dispatch table。dispatch table 是一个表结构,其中的每条记录是该类所实现的函数的selector和其所对应的函数实现的地址。
具体结构如下图:
因此单一条消息发送到一个对象时(OC的函数调用由信息的机制来实现),objc_msgSend 函数通过该对象的isa指针找到该对象的class struct,然后在该对象的类的dispatch table 里查找是否有响应该信息的函数,如果没有找到,则通过super向父类的dispatch table里查找,一直这样查找直到到达根类 NSObject 类。一旦找到响应该消息的响应函数,objc_msgSend就把传递来得参数交给它并执行返回。
OC通过这样的一种机制来实现继承。
0 0
- objective-c 继承机制 (从runtime的角度)
- 深入理解Objective-C的Runtime机制
- Objective-C总Runtime的 消息机制
- 深入理解Objective-C的Runtime机制
- 深入理解Objective-C的Runtime机制
- 深入理解Objective-C的Runtime机制
- 深入理解Objective-C的Runtime机制
- Objective-C中runtime机制的应用
- 深入理解Objective-C的Runtime机制
- Objective-C中runtime机制的应用
- 深入理解Objective-C的Runtime机制
- 初步学习objective-c的Runtime机制
- Objective-C继承机制
- Objective-C继承机制
- Objective-C中的Runtime机制
- Objective-C Runtime 底层机制
- Objective-C Runtime机制详解
- Objective-C RunTime机制(1)
- Java与多线程
- SWFUpload上传提示Error #2049
- 浅谈Java中的System.gc()的工作原理
- 遇到的问题然后自己找到答案
- VC++MFC中在初始化窗口过程中不要过早使用GetWindowRect
- objective-c 继承机制 (从runtime的角度)
- 我最近正在复习表单验证这一块内容,有一些知识点实在是想不起来了,希望各位大神能帮我解决一下!
- android的生命周期
- 编程挑战-高校俱乐部-回文距离
- MVVM 集合的ViewModel
- 大江流日夜
- 三极管
- 【JS】JS的面向对象编程
- [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据