@lynnleelhl 我这边也是在 instanceStart 这地方有问题
用法
我是用反射来new ViewController, 然后使用HandyJSON 写值进去, 类似于
JSONDeserializer.update(object: &vSelf, from: parameters)
我这边正好有个vc, 第一次new 完 update 数据是正常的, 第二次 new 完 update 就会崩溃, 稳定重现. 打印了一下相关数据, 两次的 instanceStart 差距很大. 你看看能看出什么吗
正常情况
(lldb) po pointer
▿ 0x000000010377bad8
pointerValue : 4353145560
(lldb) po pointer.pointee.class_rw_t()
▿ Optional>
▿ some : 0x00006000030ab8a0
- pointerValue : 105553167300768
(lldb) po pointer.pointee.class_rw_t()?.pointee.class_ro_t()?.pointee
▿ Optional<_class_ro_t>
▿ some : _class_ro_t
- flags : 452
- instanceStart : 848
- instanceSize : 864
(lldb) po pointer.pointee.class_rw_t()?.pointee.class_ro_t()?.pointee.instanceStart
▿ Optional
some : 848
异常情况
(lldb) po pointer.pointee.class_rw_t()
▿ Optional>
▿ some : 0x0000600002ddc4c0
- pointerValue : 105553164354752
(lldb) po pointer.pointee.class_rw_t()?.pointee.class_ro_t()?.pointee
▿ Optional<_class_ro_t>
▿ some : _class_ro_t
- flags : 35215
- instanceStart : 1207959648
- instanceSize : 17529296
(lldb) po pointer.pointee.class_rw_t()?.pointee.class_ro_t()?.pointee.instanceStart
▿ Optional
some : 1207959648