AI智能
改变未来

iOS:底层原理之 Category


Category

例:Student、Student+Test
Student:

  • -eat
  • +run

Student+Test:

  • -play
  • +study

对象方法:-eat、-play 都放在类对象的方法列表中
类方法:+run、+study 都放在元类对象的方法列表中

编译结束,Category 中的属性、协议、实例方法、对象方法都放在了 _category_t 的结构体中,并没有合并到 Class 类里面。

Category 的实现原理

  • Category 编译之后的底层结构是 struct category_t,里面存储着分类的对象方法、类方法、属性、协议信息。
  • 在程序运行的时候,runtime 会将 Category 的数据合并到类的信息中(类对象、元类对象中)

Category 和 Class Extension 的区别?

  • Class Extension(扩展/延展)在编译的时候,它的数据就已经包含在类信息中。
  • Category 在运行时,才会将数据合并到类的信息中。

Xcode 类文件编译顺序

Build Phases ——> Compile Sources

  • 点赞
  • 收藏
  • 分享
  • 文章举报

GS-NICE发布了177 篇原创文章 · 获赞 0 · 访问量 2697私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » iOS:底层原理之 Category