(ios) 地图视图的内存没能正常释放的问题

我有一个地图控制器,然后把它放到导航控制器里,在放到tabbar 控制器

 MapViewController *mapVC = [[MapViewController alloc]init]; mapVC.tabBarItem.title = @"地图"; imgePath =[[NSBundle mainBundle] pathForResource:@"地图30×30px" ofType:@"png"]; img =[[UIImage imageWithContentsOfFile:imgePath]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] ; mapVC.tabBarItem.image = img; imgePath =[[NSBundle mainBundle] pathForResource:@"地图30×30点击效果" ofType:@"png"]; img =[[UIImage imageWithContentsOfFile:imgePath]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] ; mapVC.tabBarItem.selectedImage = img; UINavigationController *mapNavC = [[UINavigationController alloc]initWithRootViewController:mapVC]; //tbc是tabbar controller [tbc setViewControllers:@[mainNavC,mapNavC,msgNavC,memNavC]];

当我点击地图对应的tabbar,进入地图视图,然后再点击别的tabbar,进入别的视图,通过instrument发现之前增加的内存并没有释放掉,请问是什么原因,我在别的地方也有地图视图,是通过导航控制器push的,pop之后那些内存是能正常释放的。
后来我在地图视图的viewwilldisappear里显式地把地图设为nil好像也不行。

- voidviewWillDisappear:BOOLanimated { [super viewWillDisappear:animated]; self.navigationController.navigationBarHidden = NO; [Util showAlertView:@"disappear"]; if self.mapV { [self.mapV removeFromSuperview]; self.mapV = nil; } }

打开地图之前的内存情况

打开地图之后的内存情况

你用的tabbarcontroller内存这么多很正常,切换的时候不会调dealloc的,只能在mainNavC,mapNavC,msgNavC,memNavC的viewwilldisappear里去控制资源,你在现在有内存泄漏,解决一下泄露的问题吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注