什么应该是保留计数在这里+ iPhone

时间:2010-10-07 13:46:29

标签: iphone

我在程序中有以下代码行

VisitWebsiteVC *visitWebSite
         = [[VisitWebsiteVC alloc] initWithNibName:@"VisitWebsiteVC" bundle:nil];
NSLog(@"Retain Count :%i",[visitWebSite retainCount]);
[self.navigationController pushViewController:visitWebSite animated:YES];
NSLog(@"Retain Count :%i",[visitWebSite retainCount]);
[visitWebSite release];

在控制台中,我将print语句视为

  

保留计数:1
  保留数:5

我不知道为什么我在推动我的viewController之后的行返回我的viewController的retainCount为5,当它必须是2时。

3 个答案:

答案 0 :(得分:4)

您不希望依赖保留计数。当你推动一个视图控制器时,幕后会发生各种各样的事情(视图被实例化,这可能意味着加载一个XIB,还有一堆尚未解雇的自动释放调用)。检查内存使用情况是一种非常危险的方法。

至于为什么它是5而不是2,正如我之前所说,它很可能与未解决的自动释放池相关。如果在viewDidAppear中检查retainCount,或者更好的是,在所有初始化调用都已解决后,它可能更接近2.

答案 1 :(得分:1)

当我不知道班级在做什么时,我停止了打印retainCount。

也许导航控制器会在短时间内保留您的控制器更多次。

但是:
Alloc => +1
pushViewController => 1

: - )

答案 2 :(得分:1)

我相信没有错。保留计数增量的数量无关紧要。重要的是,当视图控制器被弹出时,它必须被释放多少时间。