Skip to content

Latest commit

 

History

History
8 lines (7 loc) · 656 Bytes

26.第二十六题.md

File metadata and controls

8 lines (7 loc) · 656 Bytes

26.Category 在编译过后,是在什么时机与原有的类合并到一起的?

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