定义
类别(category)应用非常常见,特别是在为系统类进行扩展的时候,我们可以不用继承系统类,直接给系统类添加方法。最大程度上体现了OC语言的动态性。但是类别只能添加方法不能添加属性。
继承(inherit),一个类(子类)继承于另一个类(父类),那么子类不仅拥有父类所有的属性和方法,而且可以创建属于自己的属性和方法。
类别和继承的使用
只能使用继承,类别无法实现。
- 新扩展的方法与原方法同名,但是还需要使用父类的实现。因为类别会覆盖原类的实现,无法访问到原来的方法。
- 扩展类的属性,这个类别无法做到。
最好使用类别情况
- 针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
- 类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。