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

分类(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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 大纲 0.OC数据类型 1.声明一个类 2.实现一个类 3.创建一个对象 4.对象的注意点 5.对象方法 6.类方...
    天天想念阅读 4,816评论 0 3
  • 一、类别(Category) Ⅰ、类别文件的创建 1.新建文件2.选择iOS平台Source中的Object-C ...
    西叶lv阅读 13,607评论 10 10
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 5,527评论 0 1
  • 不吃辣,泼辣鱼却例外。虽然每次都被辣得哧溜哧溜的流鼻涕,但筷子却停不了地往这红通通的汤里夹鱼片,麻、辣、鲜、香同时...
    逛食记阅读 2,750评论 0 0
  • 我还是擅长,胡思乱想,尤其是对心仪的姑娘/往往,她随口一句话,我心理活动就一大筐/胡思乱想,一不小心,都会把气氛搞...
    狗奴才乐队阅读 1,441评论 0 0

友情链接更多精彩内容