由于想在MKAnnotationView上放一个加载的动画效果(rotate的一个动画),结果发现内存飞涨。原因是animation造成的,由于MKAnnotationView,系统有重用功能,所以分配的mkannotaitonview不一定会被马上释放掉,所以当你remove annotation的时候,对应的MKannotationView并没有被释放,它上面的动画也一直在运行,所以当要remove annotation的时候,得把相对应的动画停止。
其实理论上动画效果并不会引起内存飞涨的,由于我开启了NSZombieEnabled, 在以前的一个文章中也记录了这个问题:http://blog.csdn.net/favormm/article/details/7417184
我猜测可能是动画效果循环得太快,而开启NSZombieEnabled后,系统来不及释放动画效果中用到的内存(即使是非常简单的动画也是如此)。
所以我写了两个方法,stopAnimation 与 startAnimation,在加载MKAnnotationView的时候startAnimation,remove annotation的时候stopAnimation, 这样一来,在开启NSZombieEnabled的情况下也可以正常运行。
MKAnnotationView有重用功能, 由此我联想到UITableViewCell这种,也要同样注意。