僵尸对象
已经释放的对象就是僵尸对象
我们在scheme上开启僵尸对象检测的原理是:编译器底层 方法交换 dealloc方法 通过isa混写技术 将 这个对象指向一个新的对象_NSZombie对象 所以可以检查出来我们哪些指针指向了使用了僵尸对象
因为新创建的对象是没有任何方法的 我们调用没有实现的方法就会崩溃
会交换所有的对象的dealloc方法 如果我们这时候访问僵尸对象的话就会崩溃 将偶发变为必现
僵尸对象创建的过程
获取原来的类名 拼接上_NSZombie_ 然后动态创建这个对象
消除原来类的成员变量及关联引用
修改对象的 isa 指针,令其指向特殊的僵尸类
野指针
野指针是指针指向了已经释放的对象
网友评论