OC学习之类的进阶
2015-07-22 16:43
459 查看
面向对象编程的三大特性:
继承,封装,多态(还有一个抽象)
类的本质
类的本质其实也是一个对象(类对象):
1.类对象在程序运行时,一致存在
2.类对象是一种数据结构,存储类的基本信息:类的大小,类的名称,类的版本,类的消息与函数的映射表
3.类对象保存的信息在程序编译时确定,在第一次使用该类的时候被加载到内存中
4.类对象代表类,class代表类对象,类方法属于类对象
5.如果消息的接受者是类名,则类名代表类对象
6.运行时,所有累的额实例都有类对象生成,类对象会把实例的isa的值修改成自己的地址
7.从类对象里可以知道父类信息,可以响应方法等
8.类对象正能使用类方法,不能使用实例方法
类对象的使用
1.原来使用类名可以做的事情
(1)创建实例对象
Person *p = [Person new];
(2)调用类方法
[Person test];
2.更进一步的使用
Person *p = [Person new];
Class c1 = [p class];//c1就是Person,他是个类
Class c1= [Person class];//获取对象
Person *p = [c1 new];//实用类对象穿件实例对象
[p test];//结果是打印-test方法,也就是调用的是对象方法
[c1 test];//结果是打印+test方法,也就是调用的类方法
类对象的存储
其实类对象isa指针并不是指向代码区,而是指向源类的Class
类对象中存在大量的SEL,如下图所示:
SEL类型
全称:方法的存储位置。
验证方法:
SEL s1 = @selector(test);//手动将test方法包装成SEL类型
[p perfomselector:s1];//响应
继承,封装,多态(还有一个抽象)
类的本质
类的本质其实也是一个对象(类对象):
1.类对象在程序运行时,一致存在
2.类对象是一种数据结构,存储类的基本信息:类的大小,类的名称,类的版本,类的消息与函数的映射表
3.类对象保存的信息在程序编译时确定,在第一次使用该类的时候被加载到内存中
4.类对象代表类,class代表类对象,类方法属于类对象
5.如果消息的接受者是类名,则类名代表类对象
6.运行时,所有累的额实例都有类对象生成,类对象会把实例的isa的值修改成自己的地址
7.从类对象里可以知道父类信息,可以响应方法等
8.类对象正能使用类方法,不能使用实例方法
类对象的使用
1.原来使用类名可以做的事情
(1)创建实例对象
Person *p = [Person new];
(2)调用类方法
[Person test];
2.更进一步的使用
Person *p = [Person new];
Class c1 = [p class];//c1就是Person,他是个类
Class c1= [Person class];//获取对象
Person *p = [c1 new];//实用类对象穿件实例对象
[p test];//结果是打印-test方法,也就是调用的是对象方法
[c1 test];//结果是打印+test方法,也就是调用的类方法
类对象的存储
其实类对象isa指针并不是指向代码区,而是指向源类的Class
类对象中存在大量的SEL,如下图所示:
SEL类型
全称:方法的存储位置。
验证方法:
SEL s1 = @selector(test);//手动将test方法包装成SEL类型
[p perfomselector:s1];//响应
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构
- objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用(未完成)
- windows下objective-c的cocoa框架编程,可以有图形界面哟