项目中遇到的一个比较容易忽略的而且容易导致循环引用的问题,这里记录一下,供大家分享!
项目是一个聊天的SDK,在点击会话进入聊天页面的时候,会懒加载一个名为 sendMessageView 的一个类似发送工具的自定义视图,在这个视图实例化的时候会设置一些事件的监听和默认的基本配置.
然后什么也不做直接返回,发现 ! ! !坑来了...... 产生了循环引用,sendMessageView的dealloc方法没有走, 哦 卖 嘎! 发生了神马 !∑q|゚Д゚|p
好了既然问题出现了,那么就让我们来逐个击破 ! !
1.第一步,我开始找我的 '谷哥' 下载了一个检测内存泄漏的工具,大神编写的 工具地址:点击打开链接
2.第二步, 找来了帮手之后,就开始解决问题,首先检查是否在 block 中使用了self ,检查后发现并没有
3.第三步, 既然没有这种问题,那么就使用比较直接的调试方法 ,注释法! 我的常胜将军 ! ! ! 把那些有怀疑的都给注释掉! 运行! d=====( ̄▽ ̄*)b 成功!疑犯找到了!
4.第四步, 找到疑犯之后,开始足一审问 审问........
5 第五步:疑犯已查出!发布公告! 是 _name 下划线访问变量问题, 😆 修改成self. 点语法
总结:下划线访问变量,和点语法有什么区别呢? 看这个文章:点击打开链接
好了,大功告成 ! ! ! 😑