Skip to content

分类在编译过后,是在什么时机与原有的类合并到一起的? #32

Open
@tbfungeek

Description

@tbfungeek

详细的代码解析见 我的博客网站 coderlin.coding.me 《iOS Category 源码解析》这篇博客

  • 程序启动后,通过编译之后,Runtime 会进行初始化,调用 _objc_init。在 _objc_init会注册镜像加载结束后的通知。
  • 在镜像被加载后会调用 map_images
  • 接下来调用 map_images_nolock
  • 再然后就是 read_images,这个方法会读取所有的类的相关信息。
  • 最后是调用 remethodizeClass:,这个方法是重新方法化的意思。
  • remethodizeClass: 方法内部会调用 attachCategories: ,这个方法会传入 Class 和 Category ,会将方法列表,协议列表等与原有的类合并。最后加入到 class_rw_t 结构体中。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions