Category的用法
在Obj-C中,声明某一个已有类的Category扩展的方法如下:
- @interface ClassName (CategoryName)
- -methodName1
- -methodName2
- @end
上面的声明通常是在.h文件中,然后我们在.m文件中实现这些方法:
- @implementation ClassName (CategoryName)
- -methodName1
- -methodName2
- @end
我们创建一个iOS Single View Applciation名为CategoryExample。然后为创建一个NSString类的category扩展。File->New->File然后选择 Cocoa Touch Objective-C category.命名为ReverseNSString.系统会自动生成一个固定格式ClassName+CategoryName的.h和.m文件。
声明Category
打开NSString+ReverseNSString.h文件,在里面添加如下代码:
- #import <Foundation/Foundation.h>
- @interface NSString (ReverseNSString)
- + (NSString*) reverseString:(NSString*)strSrc;
- @end
实现Category
NSString+ReverseNSString.m文件中实现reverseString方法:
- #import"NSString+ReverseNSString.h"
- @implementationNSString (ReverseNSString)
- + (NSString*)reverseString:(NSString*)strSrc;
- {
- NSMutableString *reversedString =[[NSMutableString alloc]init];
- NSInteger charIndex = [strSrc length];
- while (charIndex > 0) {
- charIndex--;
- NSRange subStrRange =NSMakeRange(charIndex, 1);
- [reversedString appendString:[strSrcsubstringWithRange:subStrRange]];
- }
- return reversedString;
- }
- @end
剩下的工作就是验证我们的Category了,在view中添加一个按钮ReverseString,并设置相应的action方法为reverseString.在view上再添加一个label,命名为myString,默认值是”HelloCategory Design Pattern!”。点击按钮反转这个字符串。主要代码如下:
- -(IBAction)reverseString:(id)sender {
- NSString *test = [NSStringreverseString:_myString.text];
- _myString.text = test;
- }