OBJECT-C 类别

类别是一种为现有的类添加新方法的方式。你可以为任何类添加新的方法,包括那些你没有源代码的类。

类别的声明格式与类的声明格式相似:

@interface NSString(NumberConvenience)

-(NSNumber *)IengthAsNumber;

@end

该声明具有两个特点。首先,现有的类位于@interface关键字之后,其后是位于圆括号中的一个新名称。该声明表示,类别喝的名称是NumberConvenience,而且该类别将向NSString类中添加IengthAsNumber方法。但不能添加新实现变量,因此与类的声明不同的是,类别的声明中没有实例变量部分。

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

@implementation NSString(NumberConvenience)

-(NSNumber *)lengthAsNumber

{

unsigned int length = [self length];

return ([NSNumber numberWithUnsignedInt:lenght]);

}

@end

类别的局限性:

第一:无法向类中添加新的实例变量。类别没有位置容纳实例变量

第二:名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。你的类别方法将完全取代初始方法,从而无法再使用初始方法。

类别的作用:

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

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

向对象添加非正式协议

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章