之前一直对类别和扩展傻傻分不清楚,今天在网上看了一些资料 自己又整理了一下,在这记录下来分享给大家.
类别: 不通过继承的方式对原有类添加或修改方法.类别的定义和类的定义有相似之处,都是用关键字@interface和类名来定义,不同之处在于类别的定义是在类名之后不是类所继承的父类,而是用括号括起来的类别名。@end之前的方法定义和类中方法的定义是一样的。
ex:
@interface Person (People)
-(void)eat;
@end
1. 是对原有类的扩充,
2.对原有类的分散
3.可以声明私有方法
4.不能添加实例变量
创建类别的三种方式:
1. 在其他类文件中可以声明
2.在本类中声明类别
3.可以单独创建类别文件
````````````````````````````````````````````````
类的扩展:类扩展跟类别的定义有点像,类扩展有点像无名的类别。
ex:
@interface Person ()
@property (nonatomic, strong) NSString *name;
-(void)name;
@end
1.可以扩展私有的实例变量和方法
扩展的创建方式
1.直接在本类中创建
2.可以单独创建扩展文件