美文网首页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