object-c 类结构分析
来源:互联网 发布:程序员累吗 编辑:程序博客网 时间:2024/05/21 01:48
首先,类对象也是一种对象,那么它也会有自己的行为,这种行为称作类方法.与一般的类实例一样,类对象也不具备处理类方法的能力,也是要借助isa找到它所属的类,既元类,去调用类方法,类对象本身也是专注于数据的存储和布局形式.可参考类和元类
但与常规的类实例不同,一般而言类对象的字段是固定的.即它默认情况下总是包含isa,super_class,name,version,info,instance_size,ivars,methodLists,cache,protocols.
一个类的数据形式会是如下
而它的数据在内存中的组织形式也是线性的
我们知道,在Objective-C中,我们一般的定义形式是声明一个类的实例变量,属性,实例方法和类方法.并不能声明类变量.所以一般而言类对象的数据形式就是如上图的那些固定的字段.
除了我们介绍的isa,剩余的字段的含义如下:
super_class 指向父类的指针.因为Objective-C借鉴了SimTALK,在类的继承实现上,是通过一条继承链实现的.super_class就是整个继承链的核心字段.
name 类的名字
version 版本
info 信息
instance_size 实例的内存大小
ivars 是一个指向实例变量列表的指针
methodLists 是一个指向实例方法列表的指针
cache 缓存了常用的实例方法
protocols 是一个指向协议列表的指针
我们可以这样简单地去解释运行时的Objective-C的数据结构的含义
对象与实例变量有关,对象自身存储着实例变量
类对象与实例方法有关,实例方法必须通过类对象才能知晓
元类与类方法有关, 类方法必须通过元类才能知晓
对象,类与元类可谓与道教里的三清一般哦~~
运行时的类和对象
运行时的类和对象如下图
一般而言
isa关于对象是什么类
super_class关于继承链
所有元类都有同样的元类,因为他们的isa都指向同一个根元类
转自:http://husbandman.diandian.com/post/2012-08-17/40036035008
- object-c 类结构分析
- Object-c 结构体模拟类
- Object C 选择结构
- object-c 结构体
- struct object 结构体分析
- 变态的libDispatch结构分析-object结构
- Object-C 结构体学习
- C#高级(四)结构,部分类和Object类
- Object-C--->Swift之(八)类和结构体
- object-c 循环结构、选择结构、类和继承 第五天
- object-c Person类实现和分析
- nedmalloc.c结构分析
- C语言结构分析
- object-c 框架之常用结构体
- object-c 框架之常用结构体
- object-c结构体赋值
- Object-c程序整体语法结构
- 【Object-C】Object-C 的包装类
- MySQL的热备份开源工具XtraBackup [2.0.1版](一)
- SSH问题大总结
- easyui中方法$.messager.show()电脑右下角弹出消息框demo
- 《JAVA JDK8》之JCF类图
- VC串口通信
- object-c 类结构分析
- java 递归遍历树形结构
- VS2010不能创建项目的解决办法
- Android实现自定义view---绘制图片
- 守护线程与非守护线程
- 演示不同隔离级别下的并发问题
- Hopscotch
- Android Dialog点击按钮不关闭,控制窗口的显示和关闭
- Objective-c中的协议