黑马程序员-OC语言-类的本质(听课笔记)
2015-07-01 22:57
337 查看
------Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
//把类的代码加载到代码区
//产生一个类对象,类型是Class isa指向代码区的Person类
//实例化对象三件事
//申请空间 初始化 返回地址
//对象isa 指向类对象
类对象
*类对象再程序运行时一直存在。
*类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本以及消息与函数的映射表等
*类对象所保存的信息在程序编译时确定,在第一次使用该类的时候被加载到内存中。
*类对象代表类,class代表类对象,类方法属于类对象
*如果消息的接收者是类名,则类名代表类对象
*运行时,所有类的实例都由类对象生成,类对象会把实例的isa的值修改成自己的地址,每个实例的isa都指向该实例的类对象,
*从类对象里可以知道父类信息、可以响应的方法等
*类对象只能使用类方法,不能用实例方法
Person *p = [Person new];
p 实例对象
Person 也是一个对象(类对象),是Class类型
Dog *dog = [Dog new];
Dog *d2 = [Dog new];
//第一种方法获取类对象
Class c = [dog class];
Class c2 = [d2 class];
2)通过类名获取(类名其实就是类对象)
1 、类类型的变量(实例对象)
Person *p = [Person new];//把类的代码加载到代码区
//产生一个类对象,类型是Class isa指向代码区的Person类
//实例化对象三件事
//申请空间 初始化 返回地址
//对象isa 指向类对象
2 、类的本质
类的本质其实也是一个对象(类对象)类对象
*类对象再程序运行时一直存在。
*类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本以及消息与函数的映射表等
*类对象所保存的信息在程序编译时确定,在第一次使用该类的时候被加载到内存中。
*类对象代表类,class代表类对象,类方法属于类对象
*如果消息的接收者是类名,则类名代表类对象
*运行时,所有类的实例都由类对象生成,类对象会把实例的isa的值修改成自己的地址,每个实例的isa都指向该实例的类对象,
*从类对象里可以知道父类信息、可以响应的方法等
*类对象只能使用类方法,不能用实例方法
Person *p = [Person new];
p 实例对象
Person 也是一个对象(类对象),是Class类型
3 、类对象( 类名) 如何获取
1)通过实例对象获取Dog *dog = [Dog new];
Dog *d2 = [Dog new];
//第一种方法获取类对象
Class c = [dog class];
Class c2 = [d2 class];
2)通过类名获取(类名其实就是类对象)
相关文章推荐
- C语言函数一个一个去认识-1
- 【C/C++】之 strtok,strstr,sscanf 解析字符串
- 黑马程序员-OC语言-多态的实现(听课笔记)
- 【继续思考】排序算法——基数排序与桶排序
- chapter5test4
- LeetCode_Binary Tree Maximum Path Sum
- C++ 的社会繁衍
- C语言结构体
- 黑马程序员——C语言运算符的概念及分类
- C语言指向指针的指针
- c语言预处理 宏
- C语言指针数组
- C++ STL priority_queue
- 两种用于派生的Singleton模式(以TextureMgr为例)
- 二进制转化为十六进制
- C++ Keywords: typedef
- C++复习记录2 二义性 malloc free 以及 new delete
- 排序算法——计数排序
- C++模板递归深度的思考
- C语言函数指针调用函数