IOS分类(Category)
分类(Category):拓展原有类的方法,而不影响原有类的子类,分类中不能创建成员变量。
分类的使用:
1.创建分类:
如图点击(File)选择(New)->(File).. 或者使用快捷键command+N,进入上面的界面,选择(Objective-C File)图标,点击(Next)按钮,进入以下界面。
进入此界面我们需要注意(File Type) 以及(Class)下拉选项,我们的目的很明确,我们要创建分类,所以(File Type)选择"Category",Class选项的意思是,我们要为那个类进行拓展分类,比如我打算给NSString类拓展一些方法,这里我就选择NSString类,File文件名这个根据自己的实际情况填写,点击(Next)按钮,进入下个界面选择(Create)按钮完成分类的创建。
分类创建完之后的命名规则,(扩展的类名+分类的名称)。
2.分类我们已经创建成功,接着我们在分类中编写我们需要扩展的方法,这里方法的创建其实和其他类的创建是一样的。
首先我们在分类中创建我们所需要的方法:
#import <Foundation/Foundation.h> @interface NSString (CFStringWithName) // 接头中定义一个方法 + (NSString *)stringWithReplace:(NSString *)charset; @end #import "NSString+CFStringWithName.h" @implementation NSString (CFStringWithName)
// 方法很简单,如果想过滤一些关键字,就可以通过NSString类中的分类stringWithReplace方法完成 + (NSString *)stringWithReplace:(NSMutableString *)charset {
// 需要过滤的子都存放在数组中 NSMutableArray *charArray = [NSMutableArray arrayWithObjects:@"百度",@"淘宝",@"腾讯", nil]; NSString *newValue = charset;
// 通过for循环取出数组中需要过滤的关键字,进行替换。 for (NSString *str in charArray) { newValue = [newValue stringByReplacingOccurrencesOfString:str withString:@"**" ]; }
// 返回过滤之后的语句 return newValue; } @end
/**
*main 程序的入口
**/ // 如果想使用分类,即必须导入分类的头文件。 #import "NSString+CFStringWithName.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 通过NSString的category过滤字符中特殊字符。 NSString *str = [NSString stringWithReplace:@"今天所讲的淘宝是一家上市公司,百度是一家搜索公司。"]; NSLog(@"%@",str); } return 0; }
总结:分类用起来还是蛮爽快的,不破坏子类而且能扩展更多的好的方法。
暂无