调用popViewController时未释放内存

时间:2012-02-10 10:06:56

标签: ios memory

下面是我有些疑惑的代码: -

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类中没有任何对象泄露。

3 个答案:

答案 0 :(得分:1)

MyViewController有一个泄漏的内容

答案 1 :(得分:0)

它不是内存泄漏。 iOS缓存您最近访问过的控制器。当您的应用程序需要内存来执行其他任务时,它将被iOS本身解除分配。

答案 2 :(得分:-1)

在MyViewController.m文件中尝试此方法

- (void)dealloc
{
    //release any object thats retained into the memory
    [super dealloc];
}