在一次项目的开发过程中,用到了MKMapView地图显示,并放置打头阵的动画,或者地图没有加载完的时候。。在操作过程中,当地图页进入地图显示页地图没有完全加载完事(打头针没有落下插稳)的时候,如果快速切换到其它页面或对mapView进行了释放,程序就会崩溃。
输出的错误如下:
[****ViewController respondsToSelector:]: message sent to deallocated instance 0xc5b64e0
根据错误的提示,只能看出地图类在调用某个方法时传了一个已经被释放的参数,但是根据提示的方法,在地图类中根本找不到提示传参错误的方法,也就找不出具体是哪个参数被释放了。但是根据提示的方法,可以看出,方法中的respondsToSelector:似曾相识,
对,代理中很常见的一个方法。也就是说地图在调用系统的代理方法的时候传的参数已经被释放了,所以程序崩溃。
解决办法,只需要在切换界面或者释放mapView的时候将代理也至为nil即可。
mapView.delegate = nil;
转载地址:http://www.helmsmansoft.com/index.php/archives/1267
这中问题都能找到,好人一生平安~~~~