类目和延展

0、封装

一、类目(category)的基本概念和用法

1、封装是面向对象的一个特征,OC也不意外,但有时候我们会碰到这样一种情况,比如我封装了一个类,不想再动它了,可是随着程序功能的增加,需要在哪个类中增加一个小小的方法,这是我们就不必再那个类中做修改或者在定义一个子类,只需要在用到那个方法时随手添加一个该类的类目即可

 1) 在类目定义的方法,会成为原始类的一部分,与其他方法的调用没有区别

 2) 通过给父类定义类目方法,其子类也会继承这些方法,如果子类添加类目方法,父类则不会拥有子类的类目方法

2、类目的应用和局限

  1)应用

     对现有类进行扩展:

       比如,可以扩展Cocoa Touch框架中的类,你在类目中增加的方法会被子类所继承,而且在运行时跟其他的方法没有区别

     作为子类的替代手段:

       不需要定义和使用一个子类,可以通过类目直接向已有的类增加方法

     对类中的方法归类:

       利用category把庞大的类划分为小块分别进行开发,从而更好的对类中的方法进行更新和维护

   2)局限性

      无法向类目中,添加新的实例变量,类目中没有位置来容纳实例变量,如果想增加类的实例变量,只能通过定义子类的方式

      在类目中一般不要覆盖现有类的方法

二、延展基本概念和用法

 类的延展就如同是"匿名"的类目,延展中声明的方法在类本身的@implementation和它对应的@end之间实现,类有时需要方法方法只有自己所见,我们可以通过延展的方式定义类的私有方法

 //延展
 @interface Person ()

  - (void)privateMethod;

 @end

三、示例

 创建一个MachinePerson类,让这个机器人能够说话,在不改变原类的基础上让这个机器人会跳舞

 给NSArray添加一个类目,让NSArray能够将int型各位上的数放到一个数组中
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 类目和延展的作用都是为了扩展一个类。一、类目的定义和作用 二、类目的声明: 三、类目实现: 四、类目使用需要注意的...
    御风邪物阅读 4,671评论 0 3
  • 下面是我最近两年学习OC中的一些基础知识,对于学习OC基础知识的人可能有些帮助,拿出来分享一下,还是那句话不喜勿喷...
    小小赵纸农阅读 7,634评论 1 7
  • main.h 1.延展Person_PersonExtension.h Person.h Person.m 2.为...
    蛐蛐_阅读 2,593评论 0 2
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 10,491评论 0 13
  • 上一场亚冠在先输0:4的情况下,众志成城绝地一战90分钟打成4:0,最终5:1后点球失败! 今天这场足协杯也是先输...
    觉舍阅读 1,801评论 0 0

友情链接更多精彩内容