Objective-c Category(种类)

Objective-c Category(类别)
category是Objective-c里面最常用的功能之一。

category可以为已经存在的类增加方法,而不需要增加一个子类。

类别接口的标准语法格式如下:

#import "类名.h"
@interface 类名 (类别名)
//新方法的声明
@end

类别实现如下:

#import "类名类别名.h"
@implementation 类名 (类别外)
//新方法实现
@end

这跟类的定义非常类似,区别就是category没有父类,而且在括号里面有category的名子。名字可以随便取。

如:我们如果想在NSString上增加一个方法判断它是否是一个URL,那就可以这么做:

#import …
@interface NSString (Utilities)
- (BOOL) isURL;
@end

类别实现:

#import "NSStringUtilities.h"
@implementation NSString (Utilities)
- (BOOL) isURL{
  if( [self hasPrefix:@"http://"] )
      return YES;
  else 
      return NO;
}
@end

使用方法:

NSString* string1 = @"http://www.****.net";
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");