简述Category 在编译过后,是在什么时机与原有的类合并到一起的? ?
参考答案:
Category在编译过后,并不会立即与原有的类合并到一起。实际上,在程序刚刚编译完成时,Category和原来的类是分开的。它们的合并发生在程序运行时。
在程序启动后,经过一系列的初始化过程,Runtime会进行初始化,并调用相关方法以读取所有的类的相关信息。在这个过程中,Runtime会将Category的数据与原有的类合并到一起。具体来说,它会将Category中的方法列表、协议列表等数据与原有的类进行合并,并将这些数据加入到class_rw_t结构体中。
因此,Category与原有类的合并是在程序运行时发生的,而不是在编译过程中。这种设计使得Category能够在不修改原有类代码的情况下,动态地向类添加新的方法、属性和协议等,从而提供了极大的灵活性和扩展性。