今天,写项目发现百度地图一个EXC_BAD_ACCESS,字面意思就是异常_坏的_进入,大概意思就是你向一个已经释放的对象发送消息。so,怎么产生的呢,我发现总是mapView抛出的,这个mapView总在dealloc中滞空的啊。然后在不断地断点调试下,发现,发现一执行一个方法后,它就不走dealloc方法。我在一个A类里面调用了Map相关的B类,也调用了C类。关键就在这个C类,他里面有一个block,而我傻逼天真只写Type(self) weakSelf = self,而没有加__weak,导致Block引用A类无法释放,B类跟着也无法释放,B类的dealoc无法执行。
关于不走dealoclde原因,google一下,一下链接作为学习(地址),
大概总结下有以下三种,
1,A类里面调用了timer,target增加了A类的retain count,解决方法将这个timer invalidate.
2,viewCtroller里面的代理,本该是weak的delegate,写成了retain或者strong
3,viewCtroller里面的block.如上所述。
网友评论