OBJECT-C 类别
2013-05-01 16:35
369 查看
类别是一种为现有的类添加新方法的方式。你可以为任何类添加新的方法,包括那些你没有源代码的类。
类别的声明格式与类的声明格式相似:
@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
类别的局限性:
第一:无法向类中添加新的实例变量。类别没有位置容纳实例变量
第二:名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。你的类别方法将完全取代初始方法,从而无法再使用初始方法。
类别的作用:
将类的实现分散到多个不同文件或多个不同框架中,
创建对私有方法的前向引用,
向对象添加非正式协议
类别的声明格式与类的声明格式相似:
@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
类别的局限性:
第一:无法向类中添加新的实例变量。类别没有位置容纳实例变量
第二:名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。你的类别方法将完全取代初始方法,从而无法再使用初始方法。
类别的作用:
将类的实现分散到多个不同文件或多个不同框架中,
创建对私有方法的前向引用,
向对象添加非正式协议
相关文章推荐
- Object-c学习笔记十三-----类别
- 【Java基础】变长参数、Object[]类别、System.out.println异常
- Object-c的类别
- iOS 在类别里添加成员变量的方法:objc_setAssociatedObject
- object-c学习:类别Category
- Unable to create VmappPoll object:没有注册类别
- Object-C 类别与扩展
- Object-c类别
- 【Object-C】类别与扩展Category
- Object-C基础(9)——多态、类别、扩展与协议
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 
- ios object-c中property(属性)的作用和类别分析
- 让admin中的记录显示为有意义的信息,不要是Object对象形式(中文类别)
- object-c 类别
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol
- Objective-C 给类别添加属性(通过@dynamic和objc_setAssociatedObject实现)
- [Object-oriented] : 对象与类别
- Java的List<Object>如何判断元素类别、输入流的回退,以及Autocad中参照块的坐标变换。
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 
- 虚拟机错误提示VMware Workstation unrecoverable error:(vmui)Unable to create VmappPoll object:没有注册类别.