美文网首页IOS开发知识点
分类Category/扩展Extension

分类Category/扩展Extension

作者: Li_Po | 来源:发表于2020-10-14 15:12 被阅读0次

    \color{red}{分类Category}

    分类都做了哪些事情

    1.声明私有方法
    2.分解体积庞大的类文件
    3.把Framework的私有方法公开

    特点

    • 运行时决议
    • 可以为系统类添加分类

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

    1.实例方法
    2.类方法
    3.协议
    4.属性

    关联对象

    分类中添加成员变量可以使用关联对象技术
    objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key, id _Nullable value, objc_AssociationPolicy policy)

    objc_getAssociatedObject(id _Nonnull object, const void * _Nonnull key)

    objc_removeAssociatedObjects(id _Nonnull object)

    关联对象的本质

    • 关联对象由associationsManager管理并在associationsHashMap中存储
    • 所有对象的关联内容都在同一个全局容器中

    扩展(Extension)

    扩展做什么

    声明是有属性
    声明私有方法
    声明私有成员变量

    特点

    扩展(Extension)编译时决议。 (分类category是运行时决议)
    只以声明的形式存在,多数情况下寄生于宿主类的.m中。
    不能为系统类添加扩展。

    相关文章

      网友评论

        本文标题:分类Category/扩展Extension

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