美文网首页
分类和扩展

分类和扩展

作者: 进击的阿牛哥 | 来源:发表于2021-12-06 15:37 被阅读0次

    一般用分类做什么?

    1,声明私有方法

    2,分解体积庞大的类文件

    3,把framework的私有方法公开

    分类的特点

    1,运行时决议

    2,可以为系统类添加分类(UIview 获取坐标的方法)

    分类中都可以添加哪些内容

    1,实例方法

    2,类方法

    3,协议

    4,属性(分类当中定义了1个属性,实际上只声明了对应的set get方法,并没有为我们在分类中添加实例变量(通过关联对象为分类添加实例变量))

    总结

    1,分类添加的方法可以“覆盖”原类方法

    2,同名分类方法谁能生效取决于编译顺序

    3,名字相同的分类会引起编译报错

    能否给分类添加“成员变量”?

    能,通过关联对象为分类添加实例变量

    关联对象的本质

    objc_getAssociatedObject,  remove,

    我们添加两个分类,分别为A和B,两个分类当中都有1个同名的方法,那个方法才会最终会生效?实际上取决于分类的编译顺序,最后编译的那个分类当中的同名方法才会最终生效,之前的会被覆盖掉(最后编译的分类的当中方法会最早生效)。

    一般用扩展做什么?

    1,声明私有属性(不对子类暴露) 2 声明私有方法  3声明私有成员变量

    扩展的特点 以及分类的区别

    1,编译时决议   (分类是运行时决议)

    2,只以声明的形式存在,没有具体实现,多数情况下寄生于宿主类的.m中

    (分类可以有声明,也可以有实现)

    3,不能为系统类添加扩展(可以为系统类添加分类)

    相关文章

      网友评论

          本文标题:分类和扩展

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