一、extension 扩展,又叫做匿名分类
1.可以扩展属性和成员变量
2.可以扩展方法
使用扩展的好处: 将内部使用的属性和方法放在扩展中,可以隐藏实现细节,保证头文件的精简
注意:子类无法访问父类在类扩展中声明的属性和方法。
一个扩展的示例:
扩展一般放在类的实现文件顶部,即.m文件的顶部,也可以用创建Extension文件,扩展只有.h文件
对比分类,扩展没有具体的名字,即匿名分类
二、category 分类
1.以关联属性的方式添加属性,不可以添加成员变量
2.添加方法
使用分类的好处:将类的实现代码划分成易于管理的小块
一个分类的示例:
三、常见面试题:
1.为什么分类不可以添加成员变量?
分类的底层实现是分类结构体,里面没有成员变量列表,所以不能添加成员变量
2.扩展和分类区别是什么?
扩展是编译时期就把数据合并到类中
分类是在运行期才将数据合并至类中