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