Category的特点
Category是Objective-c特有的语法.它可以在不修改原有类的基础上增加新的方法,有了分类可以让多人同时编写一个庞大的类,更有利于团队开发.
使用Category的目的:
1,对现有类进行扩展.
2,作为子类的代替手段.
3对类方法进行归类.
Category使用时的注意事项:
1,调用Category中的方法时,需要导入该Category的头文件.
2,Category只能增加方法,不能增加实例变量和@property(编译不会报错,但运行会报错).
3,Category可以访问原来类中的实例变量.
4,如果Category和原类中出现同名方法,则会调用Category中的方法.
5,如果多个Category中出现同名方法,那么则会按照编译顺序,调用后编译的Category的方法.
如图,编译顺序从上到下,所以会调用Person+Student的方法.
非正式协议
非正式协议就是一种Category,给NSObject类或Foundation框架中的类增加的Category就是非正式协议.
非正式协议一般不会被实现,子类可以继承父类的Category,一般有子类实现.
Category的延展
Category的延展也被叫做扩展(Extendsion)
Extendsion是Category的一个特例,名字为空( ),可以定义实例变量,并且声明的方法一定要实现.
例:
@interface Person ()
@end
第一种建立延展的方法,
建立.h的头文件声明方法,这种建立方法只能生成相对私有的方法,当别的类调用了延展的头文件时,那么该类的对象就可以调用延展中声明的方法.
创建时与Category区别.
第二种建立的方法,
直接在.m文件中声明Extendsion.这种方法利用OC不能引入.m文件的特性,可以很好的实现方法私有化.
第三种建立方法,
直接在.m文件@implementation中实现@interface中未声明的方法,这种建立方法也能很好的实现方法私有化.
Category分类
最新推荐文章于 2020-12-22 11:28:33 发布