一、 在不建立繼承類的狀況下實現對已有類的擴展。
二、 簡化類的開發工做(當一個類須要多個程序員協同開發的時候,Category能夠將同一個類根據用途分別放在不一樣的源文件中,從而便於程序員獨立開發相應的方法集合)。
三、將經常使用的相關的方法分組。
四、 在沒有源代碼的狀況下能夠用來修復BUG。設計模式
在項目中添加文件選着Category文件類型spa
NSString+EndWith.h.net
#import <Foundation/Foundation.h> @interface NSString (EndWith) -(BOOL)endWith:(NSString*)end; @end
NSString+EndWith.m設計
#import "NSString+EndWith.h" @implementation NSString (EndWith) -(BOOL)endWith:(NSString *)end{ NSString *selfEnd = [self substringFromIndex:[self length]-[end length]]; return [selfEnd isEqualToString:end]; } @end
main.m3d
#import <Foundation/Foundation.h> #import "NSString+EndWith.h" int main(int argc, const char * argv[]) { @autoreleasepool { NSString * str = @"c:/Media/mp3/xxx.mp3"; NSLog(@"%d",[str endWith:@".mp3"]); } return 0; }