类别支持在没有源代码的情况下,基于某些特定的场合,为一个类增加功能;
可以添加
1,类方法
2,实例方法
3,重写基类方法
不能添加
1,属性
2,实例变量
3,已经存在的同名方法
命名规范
1,文件名:类名+扩展方法,如:NSString+Drawing.h/.m
使用方法:@interface NSString(Drawing)
/********
使用类别
使用场景:
1,适合在没有源代码的情况下,向已经封装的类中添加方法;
2,为一个类在某些特殊场景下增加功能;
3,对于复杂的大型文件分割实现;
添加类别
1,自己创建的类
2,系统的库
3,第三方库
/**********
扩展Extension
扩展支持在编译时、有类的源代码的前提下,向类添加功能。可以将扩张看做匿名的类别;
接口定义在.m 文件中@implementation前声明,实现代码仍然在@implementation内实现
扩展支持添加以下成员
1,属性
2,实例成员
3,类方法
4,实例方法
5,改写属性的读写属性
扩展注意:
扩展实现的成员都只能在.m 实现文件内部访问,在类外不可以直接访问;
扩展的主要用途在于信息隐藏,隐藏一些外部无需访问、而内部实现有需要使用的属性、方法:
1,类的主接口重要用于“对类外公开”的接口
2,类的扩展接口用于“对类内可见”的接口