美文网首页
分类的使用和非正式协议 - OC

分类的使用和非正式协议 - OC

作者: 以太死多 | 来源:发表于2015-09-02 16:41 被阅读844次
分类(Category)的作用:
  • 在不修改原有的类的基础上增加新的方法
    一个庞大的类可以分模块开发
    一个庞大的类可以由多个人来编写,更有利于团队合作
使用分类(Category)的目的:
  • 1>对现有类进行扩展
    可以扩展cocoa touch框架中的类,你在类别中增加的方法会被子类所继承,而且在运行时跟其他的方法没有区别。
  • 2>作为子类的替代手段
    不需要定义和使用一个子类,你可以通过类别直接向已有的类里增加方法
  • 3>对类中的方法归类
    利用category把一个庞大的类划分为小块来进行开发,从而更好的对类中的方法进行更新和维护。
声明和使用一个分类(Category):
  • 格式:
 @interface 待扩展的类名(分类的名称)      //分类声明
 @end
 @implementation 待扩展的类名(分类的名称)    //分类实现
 @end

Person+base ------>分类文件的命名规范

如:

@interface Person(base)    //@interface 待扩展的类名(分类的名称)
@end
分类(Category)的注意事项:
  • 1>分类只能增加方法,不能增加成员变量
  • 2>分类可以访问原来类中的成员变量
  • 3>如果分类和原来的类出现同名方法,优先调用分类中的方法(重写原类方法)
  • 4>如果有多个分类出现同名方法,则使用最后编译的分类
非正式协议:
  • 所谓的正式协议就是类别,即凡是NSObject或其子类Foundation框架中的类增加的分类别,都是非正式协议。
分类延展:
  • 延展又称为扩展是类的匿名类别。所谓延展,其实就是为一个类添加额外的原来没有的变量、方法或者合成属性。
 @interface MyClass(){

    float value;    //给MyClass扩展新的变量

 }

 -(void)setValue:(float)newValue;  //给MyClass扩展新的方法

 @end
  • 延展的特点:
    1>可以在延展中,定义实例变量
    2>不能使用 '@implementation 类名()' 实现类别的方法,而是直接在原'@implementation 类名' 中进行实现
    3>作用,可以定义私有的变量和方法(把@interface Person() 放到.m文件中,实现私有)
    4>

相关文章

  • 分类的使用和非正式协议 - OC

    分类(Category)的作用: 在不修改原有的类的基础上增加新的方法一个庞大的类可以分模块开发一个庞大的类可以由...

  • iOS编写高质量代码(四)

    协议 与 分类 协议(protocol):OC中的协议与Java里的接口(interface)类似,OC不支持多继...

  • iOS设计模式 (七) 协议模式

    非正式协议 非正式协议就是类别,即凡是NSObject或其子类的类别,都是非正式协议。 协议(protocol) ...

  • KVC机制-初体验

    一、简介 NSKeyValueCoding非正式协议(分类): 规定了允许了App通过key(name)值来间接的...

  • 协议protocol

    一、 非正式协议 非正式协议就是类别,即凡是NSObject或其子类的类别,都是非正式协议。 二、协议(proto...

  • OC-分类、block

    分类的概念 Category:类别、类目、分类、非正式协议 分类的作用 将一个类中的不同方法分到多个不同的文件中存...

  • MG--OC和Swift计算和清除缓存工具类之NSObject+

    一、OC计算和清除缓存方法 使用NSObject的分类专门计算缓存,封装好的工具类。此分类中使用了多线程和Bloc...

  • Swift-协议

    一、概览 二、协议的定义和遵守 二、协议的继承和限定类遵守 三、方法参数要求多个协议 四、OC协议兼容 OC中协议...

  • OC和JS交互(一):协议拦截

    协议拦截 通俗点理解,就是定义好一个协议,JS使用该协议来调用OC/Swift的方法,并且传值给OC/Swift。...

  • UIImageView 圆角

    OC 版本:创建UIImageView 分类: 使用: Swift版本: 调用:

网友评论

      本文标题:分类的使用和非正式协议 - OC

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