Category分类

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值