为什么要使用类别Category
在开发项目中,有时候需要为已有的类扩展一些新的行为,关于这种扩展方式,最容易想到的就是使用继承。
通过继承,子类可以在父类的基础上添加新的方法,甚至通过重写父类已有的方法。
但是有些时候,使用继承并不是最好的选择,比如,希望为NSNumber类新增一些方法,但由于NSNumber实际上只是一个类簇的前端类,比如,通过[NSNumber numberWithInit:5]方法所生成的NSNumber对象其实只是NSNumber子类的实例。这样即使为NSNumber派生子类也没有任何意义,派生的子类对NSNumber现有的子类并没有任何影响。此时,就需要借助类别来实现。
类簇:由于Object-C并没有提供抽象类的语法支持,而在实际项目开发中,总有需要抽象类的时候,此时就会选择定义一个父类,并以该父类派生多个子类,其它程序使用这些类时,总是面向父类编程,当程序调用父类的初始化方法、静态方法来返回对象时,实际返回的是子类的实例。这系列的类被称为一个类簇,这个父类也就模拟了抽象类的功能