Category-分类

作者: 微_涼 | 来源:发表于2018-11-13 10:31 被阅读6次

ios中的对象类型分为三类:

实例对象:存放成员变量的具体指;
类对象:存放对象方法,属性,成员变量,协议信息等;
元类对象:存放类方法;
分类是利用runtime 动态将分类的方法合并到类对象,元类对象中,是在程序运行的时候进行合并的,创建的分类的对象方法会存储在类对象里,创建的类方法会存储在元类对象里。
生成的分类的C++结构如下:


image.png

由分类的结构可以看出,并没有存放成员变量的数组,所以分类是不能直接添加成员变量的。

分类中的方法整合到类对象或者元类对象的过程:

最初的指针指向类对象的方法列表,当给这个类添加分类后,会把最初的指针指向的方法列表往后移,然后把指向分类的指针对象放到最初的指针前面。

分类的加载处理过程

1,通过Runtime加载某各类所有的category数据
2,把所有category的方法,属性,协议数据合并到一个大数组中(最后参与编译的分类数据,会放在数组的前面)
3,将合并后的分类数据(方法,属性,协议)插入到类原来的数据的前面。

类扩展,相当于把写在m文件中的一些属性,成员变量的声明,方法的声明直接剪切到h文件中,在编译的时候就已经把属性,实例方法等放到类对象中,把类方法放到元类对象中了

相关文章

  • Category-分类

    ios中的对象类型分为三类: 实例对象:存放成员变量的具体指;类对象:存放对象方法,属性,成员变量,协议信息等;元...

  • Category-初探

    参考:objc4-750源码编译 什么是Category? 分类是Objective-C 2.0之后新加的语言特性...

  • UIButton扩大触发热区

    1、创建category->Object-file->继承UIButton->写文件名2 3 4使用

  • Category-关联对象

    分类添加属性 Category能否添加成员变量?如果可以,如何给Category添加成员变量?不能直接给Categ...

  • 一次性产品

    包装材质分类 牙具分类 牙膏分类 梳子分类 拖鞋材质

  • 一明音频6按次序表答

    分类演讲,有条理,按男女分类,年龄分类,籍贯分类,其它。职业分类,戴眼镜,头发分类,例如对深圳的认识?一,天气,二...

  • 客户分类

    酒店布草租赁项目:市场细分是动脑干活的基础!数量分类、地域分类、男女分类、品牌分类、出租率分类、价格分类等等!举例...

  • 分类页面通用变量

    $sortid分类id $sortName分类名称 $template分类模版 $lognum该分类文章数 $so...

  • Excel学习笔记5

    知识点 1.分类汇总工具 -必须先排序再分类汇总 分类字段 -分类汇总-全部删除 可以撤销掉之前的分类汇总 -分类...

  • 生活垃圾分类

    1、什么是垃圾分类 生活垃圾分类通俗得说就是在源头将生活垃圾进行分类投放,并通过分类收集、分类运输和分类处理,力争...

网友评论

    本文标题:Category-分类

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