Categories可以為一個對象添加方法而不需要增加該類的子類或者更改當前的對象。實際上Categories通常被用來為已經存在的類添加方法,比如你可以自己為 NSString 字符串類添加你自己的方法。
Step1: 創建項目
啟動Xcode -> File -> New -> Project. 然後創建一個 iOS Single View Applciation。這裡我們命名為 Categories.
Step2: 創建Category
現在來創建一個Category來為NSString添加擴展方法。點擊 File -> New -> File 然後選擇 Cocoa Touch Objective-C category. 這裡我們命名為 RemoveNums。記得要從 Category on 下拉框選擇 NSString,最後點擊Create按鈕旁的Next按鈕。
聲明Category擴展的方法。
選擇 "NSString+RemoveNums.h"文件。添加以下代碼:
1
@interface NSString (RemoveNums)
2
- (NSString *)removeNumbersFromString:(NSString *)string;@end
實現Category擴展的方法
接著來到"NSString+RemoveNums.m"文件。添加以下代碼。大家可以看到這個方法實際做的事情就是從整個NSString去除掉所有的數字字符。
1
- (NSString *)removeNumbersFromString:(NSString *)string
2
{
3
NSString *trimmedString = nil;
4
NSCharacterSet *numbersSet = [NSCharacterSet characterSetWithCharactersInString:@
"0123456789"
];
5
trimmedString = [string stringByTrimmingCharactersInSet:numbersSet];
6
return
trimmedString;
7
}
Step3: 導入Category
在"ViewController.h"文件頭部添加以下代碼來導入Category
1
#import "NSString+RemoveNums.h"
Step4: 測試Category
在 ViewController.h 文件的 viewDidLoad 方法中添加以下代碼。
1
NSString *stringWithNums = @
"ABC 123"
;
2
NSLog(@
"stringWithNums --> %@"
,stringWithNums);
3
stringWithNums = [stringWithNums removeNumbersFromString:stringWithNums];
4
NSLog(@
"trimmed stringWithNums --> %@"
,stringWithNums);
Step5: 使用Category的方法
在Xcode的菜單欄點擊 Product -> Run,測試過程中,請注意控制台首先輸出的 "ABC 123",然後被方法去除數字後輸出的"ABC"
結論
我們都知道添加子類是為某一種對象添加方法的途徑,但是為了整個代碼更加簡潔直觀,我們通常會用Category的擴展方法來替代子類的添加。