下面是我有些疑惑的代码: -
MyController *vc= [MyViewController alloc] initWithNibName:@"myController"
bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
[vc release];
然后,我按导航栏上的后退按钮弹出我的控制器。
问题是内存第一次增加5mb(在活动监视器上)。当我弹出控制器时,它不会被释放。 当我一次又一次地推动和弹出时,记忆会增加少量并减少。
UIView * myView = [UIView alloc] init];
self.vi = MyView的;
[myView release];
UIScrollView * mySv = [UIScrollView alloc] init];
self.sv = mySv;
[mySvrelease];
UIProgressView * myPv = [UIProgressViewalloc] INIT];
self.pv = myPv;
[myPvrelease];
UIWebView * myWv = [UIWebView alloc] init];
self.wv = myWv;
[myWv release];
- (无效)的dealloc { [wv relase];
[sv release]
[pv release];
[vi release];
[super dealloc];
}
wv,sv,pv,vi是具有retain属性的MyViewControoler变量。 我编写了这段代码来检查内存管理概念,但我现在很困惑地看到活动监视器和仪器结果。
我已经通过使用仪器验证了我的MyController类中没有任何对象泄露。
答案 0 :(得分:1)
MyViewController有一个泄漏的内容
答案 1 :(得分:0)
它不是内存泄漏。 iOS缓存您最近访问过的控制器。当您的应用程序需要内存来执行其他任务时,它将被iOS本身解除分配。
答案 2 :(得分:-1)
在MyViewController.m文件中尝试此方法
- (void)dealloc
{
//release any object thats retained into the memory
[super dealloc];
}