美文网首页
分类(Category)和扩展(Extension)

分类(Category)和扩展(Extension)

作者: 陌巷先森 | 来源:发表于2019-02-28 10:14 被阅读0次

    一、Category

    Category的作用

    category是Objective-C2.0之后添加的语言特性,category的主要作用是为已经存在的类添加方法。

    Category的格式

    @interface 类名 (分类类名)
    @end
    
    @implementation 主类类名(分类类名)
    @end
    

    Category注意事项

    category只能给某个已有的类扩充方法,不能添加成员变量,通过@property只会生成setter和getter的声明,不会生成setter和getter的实现以及成员变量(可以通过runtime方式来访问和生成关联对象,从而模拟生成属性)。

    Category实现原理

    category的优先级比较高,当category中的方法名和类中原有方法同名时,系统会优先调用category中的方法。这是因为category添加的方法在原有类方法之前,系统查找到方法名后停止继续查找。

    二、Extension

    Extension格式

    @interface 类名 ()
    @end
    

    Extension注意事项

    • extension不但可以声明方法,还可以声明属性,成员变量。
    • extension一般用于声明私有方法,私有属性,私有成员变量。
    • extension只拥有一个.h文件,不过extension一般不单独存在,而是寄生在类的.m文件中
    • extension声明的方法必须实现

    三、Category和Extension的区别

    1.extension在编译期就实现,category在运行期实现
    2.extension可以添加实例变量,category不可以
    3.extension需要有类的源码,而category可以给系统的类添加。

    参考:完整项目资料下载

    相关文章

      网友评论

          本文标题:分类(Category)和扩展(Extension)

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