iOS开发:从零基础到精通
上QQ阅读APP看书,第一时间看更新

5.2 分类

当需要为UIKit类/Foundation框架中提供的系统类增加新的API时,可以有多种方法实现,例如,可以新建一个子类,然后在子类中实现新的功能,但这样做会增加很多类,从而增加代码维护的工作量。除此之外,还可以对原有的类增加其分类,对类中提供的API进行扩展,例如,在原有的系统类中定义新的方法,这称为分类(Category)。

1.创建分类的方法

当需要对一个类新增一些新方法时,可以使用分类Category功能。特别是针对系统自定义的类,如UIView、UIImageView等。例如,大名鼎鼎的SDWebImage框架,就是UIImageView类的分类。假如希望给UIImageView类增加一个分类,在该分类中新增一个类方法,即:当实例化一个UIImageView对象时,可以默认填充一张图片。可以按照如下步骤进行:

  • 在Xcode中创建分类文件,新增分类如图5-12所示,选择Objective-C File。

图5-12 新增分类

  • 填写分类的名称,File Type选择Category,Class填写是针对哪个类的扩展,如图5-13所示。
  • 单击Next按钮即可完成文件的添加。添加完成后,在工程目录中会出现,如图5-14所示。
  • 在.h文件中,添加需要实现的新方法名称,即增加新的API。

图5-13 填写分类信息

图5-14 分类创建成功

  • 在.m文件中,对新增的方法实现其具体的功能,例如,当调用UIImageView的imageViewWithDefaultImage方法时,会自动填充一个默认占位图。
  • 当需要创建UIImageView对象的时候,可以使用分类中新增的imageViewWithDefaultImage方法来创建一个UIImageView对象,并且该对象具有一个默认图片。

2.使用分类时的注意事项

当使用分类Category时,有以下几个方法需要程序员关注。

  • 不要用分类去重写已经存在的方法。
  • 通过使用分类添加的方法,不仅针对该类有效,对于其子类也有效,例如:给UIView添加了分类,UIImageView、UIButton等子类也可以使用。
  • 类+分类名称必须唯一。