realizeClass 中遇到的问题

来源:3-6 isa_t介绍

嗷嗷嗷嗷嗷嗷

2021-11-25

ro = (const class_ro_t *)cls->data();
这里data是 class_rw_t类型的 为什么直接强转

写回答

1回答

逆风

2021-12-08

理解两点:

  1. C++结构体类型转换,class_rw_t转换成class_ro_t,也不影响flags值,重新ro赋值即可。

  2. 此时class_rw_t可能还未分配内存,cls->data()的值就是class_ro_t,所以此处需要分配class_rw_t内存,并给cls->data()重新赋值。

0
0

面试跳槽提升必备 全面解析iOS中的Runtime机制

高薪职位,复杂业务需求,高性能APP,Runtime技术不可不学。

275 学习 · 48 问题

查看课程