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私信关注