黑马程序员技术交流社区
标题: 分类category的非正式协议和Extension延伸 [打印本页]
作者: tz19900926 时间: 2015-9-26 16:45
标题: 分类category的非正式协议和Extension延伸
分类(Category)非正式协议
所谓非正式协议就是类别,即凡是NSObject或其子类的类别,都是非正式协议;
给NSObject增加类别
这是一个非正式协议
@interface NSObject (run)
-(void)run;
@end
这是一个正式协议
@interface Person (eat)
-(void)eat;
@end
如给NSString,NSObject增加类别就是非正式协议
类的延展的概念(Extension) (有面试到)
Extension是Category的一个特例
其名字为空,并新添加的方法一定要予以实现 (category没有这个限制)
@intfacet Person ( ) { 类扩展
int _age; 可以增加新的实例变量 (category不可以)
}
-(void)setAge:(int)age;
@end
延展的实现
类
@interface Person : NSObject
@end
扩展/延展/延展分类
延展是一个特殊的分类
特点:
1 可以增加实例变量
2 不能使用 @implementation 类名 () 去实现类别方法,要在被延展的类中实现
@interface Person ()
{ int _age; }
-(void)run;
@end
3 可以定义私有的变量和方法
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |