谢天谢地,糟心的内存管理终于讲完了,我们的OC内存管理也就先告一段落了,以后还是需要多练习多理解,记住,理解最重要。
今天呢,我们再来讲一个很重要的语法——Category,根据字面的意思呢就是种类、分类。这是一个OC特有的语法,在Java中是没有的,但是在OC项目中经常被用到,所以说很重要。
我查了很多的资料,发现书中对Category并没有一个很明确的定义,如果要给他一个定义的话,我觉得称它为扩展类比较合适,为什么说是扩展类呢?我跟大家说一下Category的用途大家就了解了。
Category的用途
1. 在不创建继承类的情况下实现对已有类的扩展。
2. 简化类的开发工作(当一个类需要多个程序员协同开发的时候,Category可以将同一个类根据用途分别放在不同的源文件中,从而便于程序员独立开发相应的方法集合)。
3. 将常用的相关的方法分组。
4. 在没有源代码的情况下可以用来修复BUG。
总之就是一句话,Category
可以动态的为已经存在的类添加方法,而且原始规模较小,不需要创建子类
Category的用法
我们还是来新建一个类吧,在实际运用中介绍一下它的用法
首先,我们来新建一个Student类
Student.m
#import "Student.h"
@implementation Student
#pragma mark test方法
- (void)test{
NSLog(@"调用了test方法");
}
@end
现在给大家出一个题目,在不动Student的情况下,给Student添加一个新方法,你会怎么做?
我就不卖关子了,直接上图
1、新建Objective-C category
2、分类名称填写Test,Category on 选择Student
3、注意扩展类的命名格式
Student+Test.h
#import "Student.h"
//()代表着一个扩展类
//()里面的Test代表着扩展类的名称
@interface Student (Test)
-(void)test2;
@end
Student+Test.m
import "Student+Test.h"
@implementation Student (Test)
- (void)test2{
NSLog(@"调用了test2方法");
}
@end
是不是很方便?剩下的就不用我再说了吧,大家快来多多练习一下吧
相关链接
http://pan.baidu.com/s/1eQ4UYQm