[iOS]深入理解__bridge - OC对象与C++对象的引用转换
0x0 crash
昨天在iOS Geekers钉钉群里聊到一个问题, 下面的代码会crash:
void* a = new char;
id ext = (__bridge id)a;
crash现场如图:
看看挂的地方:
挂在objc_retain里面:
objc_retain的作用是对oc对象做retain用的, 我们对指令做一下简单的解析:
libobjc.A.dylib`objc_retain:
0x1810d00a0 <+0>: cbz x0, 0x1810d00c8 ; <+40> // 判断x0也就是传进来的第一个参数是不是nil, 在这里x0是变量a, 也就是char类型的指针
0x1810d00a4 <+4>: tbnz