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; }

 总结:分类用起来还是蛮爽快的,不破坏子类而且能扩展更多的好的方法。

 

posted @ 2015-08-29 22:39  牛精神  阅读(923)  评论(0编辑  收藏  举报