一、类别的基本知识
1.概念:Category 类别是OC语言特有的,最大程度体现OC语言的动态性。在很多的情况下,往往是给系统自带的类添加分类,如NSString,因为有的时候,系统类可能并不能满足我们的要求。
2.作用:
(1)为原有类扩展方法。
(2)分散类的实现
(3)私有API
3.与继承的区别
继承是重量级的,继承父类所有的方法和属性,是创建一个新类,改变了原有类的结构。类别是轻量级的,是对原有类的方法的扩充,不改变原有类的内容。
4.创建一个类别
iOS——》Source——》Objective-C File
选择Class 原来的类 File Type Category 填写File的名字
二、编程小例
给NSString类增加一个两个类方法
1.获取根目录路径
2.获取Documents文件路径
类别中方法的声明
#import <Foundation/Foundation.h>
@interface NSString (Addition)
//获取根目录路径
+(NSString *)getHomePath;
//获取Documents文件路径
+(NSString *)getDocumentsPath;
@end
类别中方法的实现
#import "NSString+Addtion.h"
@implementation NSString (Addition)
//实现获取根目录方法
+(NSString *)getHomePath{
return NSHomeDirectory();
}
//实现获取Documents文件路径方法
+(NSString *)getDocumentsPath{
// 给字符串追加上一个字符串
return [NSHomeDirectory()stringByAppendingString:@"/Documents"];
}
@end
类别在ios的模块化开发时特别有用,大神们也写了不少值得膜拜的类别。Categories是给你得不到源码的classes增加功能的一种方法。这个页面收集一些相关的Category,并且持续更新,你可以订阅关注。作者是Fille Åström,是@ IMGNRY的联合创始人和开发者。