本帖最后由 程浩 于 2014-4-9 15:56 编辑
分类:可以给某一个类扩充一些方法(不修改原来类的代码)
在不改变原来类内容的基础上,可以为类增加一些方法
注意:
1.不可以扩充成员变量,只能加方法
2.在分类方法的实现中可以访问原来类中声明的成员变量
3.分类优先级最高,当调用一个方法:分类(最后参与编译的分类优先)---->原来类---->父类
4.如果多个分类扩展实现了同一个方法,则最后编译的点m文件覆盖前面的方法,被先调用。
这就是说,不是新建一个对象使用分类方法,而是使用原来的对象来使用分类中的方法
相当于,你修建了一条铁路,本来只能跑拉煤的火车,现在,你要跑高铁,你只需要造一个高铁,把高铁放到上面就行了
- //声明
- Person+mj.h中:
- #import "Person.h"
- @interface Person (MJ)
- - (void)study;
- @end
- //实现
- Person+mj.m中:
- #import "Person+mj.h"
- @implementation Person (MJ) //一般写分类模块名称
- - (void)study
- {
- NSLog(@"学习-------");
- }
- @end
- //调用
- #import <Foundation/Foundation.h>
- #import "Person.h"
- #import "Person+mj.h"
- int main()
- {
- Person *p = [[Person alloc] init];
- [p test];//person中有的方法
- [p study];//在不改变person类的声明实现,当不能实现继承时,可以通过分类来添加方法
- return 0;
- }
复制代码
|