A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分类(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 可以定义私有的变量和方法

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马