美文网首页
僵尸对象和野指针

僵尸对象和野指针

作者: Rumbles | 来源:发表于2020-10-14 21:30 被阅读0次

僵尸对象

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

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

僵尸对象创建的过程

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

野指针

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

相关文章

网友评论

      本文标题:僵尸对象和野指针

      本文链接:https://www.haomeiwen.com/subject/ikcgpktx.html