oc----分类

分类

1.非正式协议与正式协议区别

2.对原有的类添加一些功能(方法)作为源类扩展,他的功能是扩展类的能力.为一个类创建分类,其实就是把它的实现分成几部分来实现。每个类别都是类的一部分。你可以为一个类写很多分类,这些分类都是原有类的一部分,其中的成员也会被原有类的子类继承。一个类可以有多个分类,但是每一个分类中,只可以为原有类增添方法,不能增添实例变量。

3.尽管分类可以访问原始类的实例变量,但是他不能添加自身的任何变量,如果需要添加变量,可以考虑创建子类。


4. 声明分类的一般格式:

@interface 所扩展的类名 (分类名) <protocol,...>

-(void)print;

@end 

@interface className (categoryName) <protocol,...>

    methodDeclaration//给原有类增加的新方法

    methodDeclaration//或:覆盖原有类已有的方法(不推荐)

//-(void)print; 如果确实需要覆盖原有类的方法,推荐用继承。

...

@end


5.每一个类别都需要保证是唯一的,分类的名字用 原有类名/分类名字 来唯一标示

6.对于分类来讲,它里面的方法,如果不需要的话,可以不实现。但是一定要注意,分类中只能为已有类添加方法,或者重写已有类的方法(不推荐),(重载一个方法后,再也不能访问原来的方法,因此,必须小心将被重载方法中的所有功能复制到替换方法中)但是不能添加实例变量

   另外,写分类时,方法名不要同名

7.OC子类里可以调用被覆盖的父类版本的方法,用[super 方法名]

  但被分类覆盖的方法没法再调用到

8.分类的好处:

对于分工明确的的开发,分组操作时可以使用分类,便于之后项目的整合。

  使用分类时,可以把程序分来来调试,使它们能够更好的为原有类服务。

如果把分类的声明和实现都放在某一个类的.m文件中,那么这个分类的方法,只在本文件可见,其它文件不可见。是相对私有的,但是如果别人能知道方法原型,同样是可以去使用的。

       一个类可以在不同的程序中进行不同的扩展,即使是系统的类也同样可以为它们写分类。

最后这一点很重要,因为每一个开发人员都有自己的命名规范或编程习惯,使用分类扩展方法时,方法名可以根据自己的需要命名。

     其实对类进行扩展也可以使用继承,但是使用继承,可能会导致一个类出现一个庞大的子类体系。此外,使用子类的方法时对应的类也不是原有类,而是子类

9.分类的用处

对于一个不想公开源代码的类来讲,为它创建分类还是很有必要的

使用在扩展那些你无法看到类的实现代码的类的,你可以为这些类添加扩展函数,可以重载源类中的成员函数,来满足自己的实际需求

对于那些需要分工合作的工作,也是适合写分类

注意

在使用分类的时候,只有一个限制:类别和继承关系不可以同时出现,需要分两步来做


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值