Category分类

来源:互联网 发布:nginx配置域名跳转 编辑:程序博客网 时间:2024/05/25 19:56

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中未声明的方法,这种建立方法也能很好的实现方法私有化.


0 0
原创粉丝点击