iOS入门小知识-分类

分类

OC中特有的一种语法,Category,通常我们叫它分类、类别和类目。分类可以在不改变原来类的基础上,给类扩充一些方法,继承也可以给类扩充方法,子类继承父类的所有方法,也可以声明并实现独有的新方法,但分类不可以给类添加新的成员变量和属性(其实是可以利用runtime机制给类添加属性,但是从分类的特性来说是不能添加新的成员变量和属性的)。

创建分类

分类的格式:

@interface 类名(分类名称)

//方法声明

@end

声明部分

@implementation 类名(分类名称)

//方法实现

@end

实现部分

一个庞大的类,开发中我们并不建议去缔造这样一个庞大的类,因为没有人会愿意做下一个接盘手,就连自己都是不接受的,这个时候使用分类,将这个庞大的类分成不同模块,并由多人协同开发,这样才更有利于团队合作,并能大大提高开发效率、有利于代码的管理。

分模块开发

但在使用分类时我们要注意以下几点:

1.分类可以访问原始类的成员变量、属性,但不能添加成员变量、属性,只能添加方法。如果想添加变量,可以考虑通过继承创建子类

2.分类可以实现原始类的方法,但不建议这么做,因为它会直接替换掉原来的方法,这么做的后果是再也不能访问原来类的方法

3.多个分类中如果实现了相同的方法,只有最后一个参与编译的才会有效

匿名分类(扩展)

扩展是分类的一种特殊形式,是特殊的分类,扩展没有名字,当不想对外公开一些类的方法、属性和成员变量的时候,我们可以使⽤类扩展。

如何创建类扩展?一种是另起文件,一种是直接在原始类中添加。

另起文件方式
代码添加类扩展

类扩展的功能:

1.可以实现私有方法

2.方便开发者调用不公开的方法,处理相应的业务逻辑

3.可以声明私有的成员变量和属性

你可能感兴趣的:(iOS入门小知识-分类)