为什么要有category
在大型项目,企业级开发中多人同时维护同一个类,此时程序员A因为某项需求只想给当前类currentClass添加一个方法newMethod,那该怎么办呢? 最简单粗暴的方式是把newMethod添加到currentClass中,然后直接实现该方法就OK了。 但考虑到OC是单继承的,子类可以拥有父类的方法和属性。 如果把newMethod写到currentClass中,那么currentClass的子类也会拥有newMethod。但真正的需求是只需要currentClass拥有newMethod,而currentClass的子类不会拥有。 苹果为了解决这个问题,就引入了分类(Category)的概念。
简单来说,为了使一个方法可以让父类使用,而继承于它的子类不能使用,我们有了category。
创建
一般我们在创建一个class的时候,会出现这个界面:
而创建一个category,就是选择Objective-C File
:
接着会出现:
对于Type
,我们选择Category
,
Class
,我们填写要作用的父类的名字,
至于File
的名字,可以写要添加于添加方法有关的名字。
最后创建出来的Category
如下:
我们可以发现,Category的取名规则是这样的:
所作用的父类名+创建时取的File名
使用
添加方法
创建成功后,我们就可以在里面添加要用的方法啦。
例如在这里添加一个设置背景图片的方法: