美文网首页
2.Category、Extension、Protocol

2.Category、Extension、Protocol

作者: Roader | 来源:发表于2016-11-30 00:06 被阅读6次

    一 . Category分类

    1. 为什么用分类:是一个子类化替代方案。解决通过父子类继承关系来扩充方法造成的代码高耦合问题。

    2. 分类作用:给本类扩充方法(增加功能),但不能扩充属性(用property关键字定义属性,只会生成getter和setter方法);父类的分类方法会被子类继承。

    3. 应用场景

    (1)给类扩充方法(比如扩展系统类);

    (2)对庞大的类进行分功能分模块开发;

    (3)SDK编写时用分类隐藏私有方法。

    4. 注意点:第一,用分类去重写类的方法,仅对本Category有效,不会影响到其他类与本类的关系;第二,如果子类和子类的分类都实现了父类方法,那调用顺序是分类 -> 子类 -> 父类,但是苹果文档不建议这么做,要重写方法应该使用继承实现。

    二 . Extension类扩展

    1.定义:又称作匿名分类,是分类的一个特例。

    2.作用:写在.m文件中,为本类扩充私有属性和方法。

    3.注意:

    1)不需创建新文件,直接在原类的.m文件中添加属性和方法。

    2)所谓私有方法只能本文件调用,外部文件里无法调用。

    4.格式:

    @interface 类名( )

    属性.......

    @end

    @implementation 类名( )

    方法.......

    @end

    三 . Protocol协议

    1. 协议:在OC的类中让没有继承关系的类之间产生联系。任何类只要遵守该协议,就能实现协议中定义的方法;协议还可以用于定义对象能够发送哪些消息(通过设置遵守协议的属性)。协议让OC支持了多重继承部分特性(通过方法声明)。

    协议本质时一系列方法的声明,是开发中的向上抽象思想的产物。

    2. 注意:

    (1)只要遵守了某协议,就必须实现@required方法;

    (2)协议本身可以遵守其他协议;

    (3)子类会继承父类遵守的协议;

    (4)和分类一样,协议内不能加属性。

    相关文章

      网友评论

          本文标题:2.Category、Extension、Protocol

          本文链接:https://www.haomeiwen.com/subject/qlszpttx.html