我在程序中有以下代码行
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时。
答案 0 :(得分:4)
您不希望依赖保留计数。当你推动一个视图控制器时,幕后会发生各种各样的事情(视图被实例化,这可能意味着加载一个XIB,还有一堆尚未解雇的自动释放调用)。检查内存使用情况是一种非常危险的方法。
至于为什么它是5而不是2,正如我之前所说,它很可能与未解决的自动释放池相关。如果在viewDidAppear中检查retainCount,或者更好的是,在所有初始化调用都已解决后,它可能更接近2.
答案 1 :(得分:1)
当我不知道班级在做什么时,我停止了打印retainCount。
也许导航控制器会在短时间内保留您的控制器更多次。
但是:
Alloc => +1
pushViewController => 1
: - )
答案 2 :(得分:1)
我相信没有错。保留计数增量的数量无关紧要。重要的是,当视图控制器被弹出时,它必须被释放多少时间。