我有一个地图控制器,然后把它放到导航控制器里,在放到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好像也不行。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.navigationController.navigationBarHidden = NO;
[Util showAlertView:@"disappear"];
if (self.mapV) {
[self.mapV removeFromSuperview];
self.mapV = nil;
}
}
打开地图之前的内存情况
打开地图之后的内存情况
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你用的tabbarcontroller内存这么多很正常,切换的时候不会调dealloc的,只能在mainNavC,mapNavC,msgNavC,memNavC的viewwilldisappear里去控制资源,你在现在有内存泄漏,解决一下泄露的问题吧。