先看代码,这是很好说明类别的一实例:
NSStringUtilities.m
#import "NSStringUtilities.h"
@implementation NSString (Utilities)
-(BOOL)isURL{
if ([self hasPrefix:@"http://"]) {
return YES;
}else {
return NO;
}
}
@end
#import <Foundation/Foundation.h>
#import "NSStringUtilities.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *string1 = @"http://www.xinlaoshi.com/";
NSString *string2 = @"Pixar";
if ([string1 isURL]) {
NSLog(@"string1 is a URL");
}else {
NSLog(@"string1 is not a URL");
}
if ([string2 isURL]) {
NSLog(@"string2 is a URL");
} else {
NSLog(@"string2 is not a URL");
}
[pool drain];
return 0;
}
1,isURL就是在NSString中新加的方法
2,NSString (Utilities)这种规定要记住,类名(类别名)),把名去掉,就是类别了,类别就是这样来的了
3,类别是为已存在的类增加方法,而不用增加一个子类
4,类别不能为类声明新的实例变量,它只包含方法
5,类作用域中的所有实例变量,都能被这些类别方法所访问
刚才举的这个实例,类就是NSString,类别方法就是我们加的isURL