2012-04-06 73 views

回答

4

比方说,您想添加功能到现有的类(exp:NSString)。你可以通过创建一个子类来做到这一点,或者你可以使用一个类别。通常使用以下模式来命名文件的类别:MyClass+MyCategory.h

例如,我们可以将方法reverseString在一个类别添加到类NSString

// File NSString+reversable.h 
- (NSString *)reverseString; 

// File NSString+reversable.m 
- (NSString *)reverseString 
{ 
    // Implementation 
} 

看一看这个documentation有关类别的更多信息。

然后,可以使用该类别在另一个类中: - 按照惯例-

#import "NSString+reversable.h" 
// ... 

NSString *aString = @"Hello!"; 
NSString *reversedString = [aString reverseString]; 
4

的“+”,在页眉/源文件名是用于描述Category实现。

例子:

比方说,你想添加一些功能添加到现有类(e.g.the NSString类)。 (NSString+Utilities.h

// NSString+Utilities.h 

@interface NSString (Utilities) 
-(NSString *) doSthWithThisString; 
@end 

// NSString+Utilities.m 

@implementation NSString (Utilities) 

-(NSString *) doSthWithThisString 
{ 
    NSMutableString *transformedStr = [self copy]; 

    // Do sth 

    return transformedStr; 
} 

@end 

使用它:

// in another file 

#import "NSString+Utilities.h" 

- (void)awakeFromNib 
{ 
    NSString* myString = @"This is a string"; 

    // you may use our new NSString method as much as any already-existing one 
    NSString* newString = [myString doSthWithThisString]; 
} 

参考:

+0

笑,我们都使用了'NSString'扩展作为一个例子。 +1为完整的扩展声明。 – sch 2012-04-06 10:00:27

+0

@sch哈哈哈......的确如此;这是一个非常典型的(而且很容易获得)的例子,不是吗? – 2012-04-06 10:03:34

相关问题