僵尸对象和野指针

僵尸对象

已经释放的对象就是僵尸对象
我们在scheme上开启僵尸对象检测的原理是:编译器底层 方法交换 dealloc方法 通过isa混写技术 将 这个对象指向一个新的对象_NSZombie对象  所以可以检查出来我们哪些指针指向了使用了僵尸对象 
因为新创建的对象是没有任何方法的  我们调用没有实现的方法就会崩溃

会交换所有的对象的dealloc方法  如果我们这时候访问僵尸对象的话就会崩溃  将偶发变为必现

僵尸对象创建的过程

获取原来的类名 拼接上_NSZombie_ 然后动态创建这个对象 
消除原来类的成员变量及关联引用
修改对象的 isa 指针,令其指向特殊的僵尸类

野指针

野指针是指针指向了已经释放的对象

你可能感兴趣的:(僵尸对象和野指针)