iOS类别的使用

类别是一种为现有的类添加新方法的方式。
类别的声明格式与类的声明格式相似:

@interface NSString (NSNumberCreation)

-(NSNumber *)lengthAsNumber;

@end

现有的类位于@interface关键字之后,其后是位于圆括号中的一个新名称。该声明表示,类别的名称是NumberConvenience,而且该类别将向NSString类中添加方法。

类别的实现:

与@interface部分对应的还有一个@implementation部分,你可以在@implementation部分实现自己的方法:

@implementation NSString (NSNumberCreation)

-(NSNumber *)lengthAsNumber

{

unsigned int length = [self length];

return ([NSNumber numberWithUnsignedInt:length]);

}

@end

类别的作用

1.将类的实现分散到多个不同文件或多个不同框架中

2. 创建对私有方法的前向引用

3. 向对象添加非正式协议

类别的局限性

1.无法向类中添加新的实例变量。

2.命名冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。你的类别方法将完全取代初始化方法,从而无法在使用初始化方法。最好的方法是在类别方法名中增加一个前缀,以确保不发生名称冲突。

分享到: 更多
Separator image Posted in IOS.