在EXC_BAD_ACCESS问题上的处理

        上星期碰到一个bug,每次都直接crack到main函数里,因为代码涉及到 imageV.image = image.change() 的问题,隐约知道有可能出现在内存问题上,由于某个功能实现需要整理,暂时放了一边,今天再次碰到,发现如果不解决会导致下面的扩展实现不了,确实要命。


        既然crack到了main函数,也提示了EXC_BAD_ACCESS这个错误,那就Google关键词EXC_BAD_ACCESS,照着EXC_BAD_ACCESS的本质详解以及僵尸模式调试原理里的对了一下,最后对比代码,看到错误涉及到的代码中的对象不是OC对象,所以只能看代码,因为想着涉及内存问题,所以先使用Xcode的静态内存分析,发现了以下问题:

        1、decrement of the reference count of an object that is not owned at this point by the caller


按字面意思,就是release错了,而且Xcode也给了个箭头直接标出问题所在了,标出的第一次说了该对象是一个引用计数器为0的对象,那下面就不需要release了

        2、Potential leak of an object stored into 'maskRef'


按字面意思是创建了一个引用计数器为1的对象,后面leak说对象被创建和存储在了maskRef中,而这些对象不是OC对象,只能手动release了

推荐阅读更多精彩内容