![iOS开发:从零基础到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/796/26793796/b_26793796.jpg)
上QQ阅读APP看书,第一时间看更新
5.2 分类
当需要为UIKit类/Foundation框架中提供的系统类增加新的API时,可以有多种方法实现,例如,可以新建一个子类,然后在子类中实现新的功能,但这样做会增加很多类,从而增加代码维护的工作量。除此之外,还可以对原有的类增加其分类,对类中提供的API进行扩展,例如,在原有的系统类中定义新的方法,这称为分类(Category)。
1.创建分类的方法
当需要对一个类新增一些新方法时,可以使用分类Category功能。特别是针对系统自定义的类,如UIView、UIImageView等。例如,大名鼎鼎的SDWebImage框架,就是UIImageView类的分类。假如希望给UIImageView类增加一个分类,在该分类中新增一个类方法,即:当实例化一个UIImageView对象时,可以默认填充一张图片。可以按照如下步骤进行:
- 在Xcode中创建分类文件,新增分类如图5-12所示,选择Objective-C File。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-P136_16293.jpg?sign=1739314434-yUrFqH4XL2nh82Q4QLk0Kihk0CpfWr7p-0-afe28a683f22b5835ae8f95cd2271f27)
图5-12 新增分类
- 填写分类的名称,File Type选择Category,Class填写是针对哪个类的扩展,如图5-13所示。
- 单击Next按钮即可完成文件的添加。添加完成后,在工程目录中会出现,如图5-14所示。
- 在.h文件中,添加需要实现的新方法名称,即增加新的API。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-T136_16297.jpg?sign=1739314434-wsE6T6aZXAP44ql3Kc7qjA3O0CrW1dW5-0-c6c63b33ea279ea710abddc9dda0ae5a)
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-P137_16366.jpg?sign=1739314434-24Ye9DWlQRa87miYqTzOtBhdIOeEqjTm-0-3123a2e2f6045ce8c47c940f55551081)
图5-13 填写分类信息
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-P137_16369.jpg?sign=1739314434-rhZXXutELcMqtFVHNOHJB9lRDzajNLVF-0-3a21a572382348022d3a22165bcaf8b2)
图5-14 分类创建成功
- 在.m文件中,对新增的方法实现其具体的功能,例如,当调用UIImageView的imageViewWithDefaultImage方法时,会自动填充一个默认占位图。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-T137_16373.jpg?sign=1739314434-V9gBgdf4NeWXJiKkpCOYFZENcRUxCL9V-0-cc5ed1b6cfab571354bea0f4be2412b6)
- 当需要创建UIImageView对象的时候,可以使用分类中新增的imageViewWithDefaultImage方法来创建一个UIImageView对象,并且该对象具有一个默认图片。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-T138_16448.jpg?sign=1739314434-tJG4i8XLY6iMlqWhMInoTgjZhCeDllHe-0-b52ae160258ba138b2ed3a75d4bcea4d)
2.使用分类时的注意事项
当使用分类Category时,有以下几个方法需要程序员关注。
- 不要用分类去重写已经存在的方法。
- 通过使用分类添加的方法,不仅针对该类有效,对于其子类也有效,例如:给UIView添加了分类,UIImageView、UIButton等子类也可以使用。
- 类+分类名称必须唯一。