在object C语言中,有一种机制,可以在类定义之外。通过categories的形式,定义属于这个类的函数。例如:
在categories “FirstLetter”中,定义属于NSString类的函数BNR_firstLetter,
#import
@interface NSString (FirstLetter)
- (NSString *)BNR_firstLetter;
@end
它的实现定义与对应的.m文件中。
#import "FirstLetter.h"
@implementation NSString (FirstLetter)
- (NSString *)BNR_firstLetter
{
if ([self length] < 2) {
return self;
}
NSRange r;
r.location = 0;
r.length = 1;
return [self substringWithRange:r];
}
@end
我们可以像使用NSString本身具有的函数一样,使用这个新定义的函数。
- (BOOL)readFromPasteboard: (NSPasteboard *)pb
{
// Is there a string on the pasteboard?
NSArray *types = [pb types];
if ([types containsObject:NSStringPboardType]) {
// Read the string from the pasteboard
NSString *value = [pb stringForType:NSStringPboardType];
[self setString:[value BNR_firstLetter]];
return YES;
}
return NO;
}