美文网首页
分类的使用和非正式协议 - 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

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