sta*_*ext 13 iphone memory-leaks memory-management uiviewcontroller uinavigationcontroller
我希望在我推出一个视图控制器后,我需要释放我对视图控制器的所有权,就像我在下面所做的那样.
CustomViewController *nextViewController = [[CustomViewController alloc] initWithNibName:@"CustomView" bundle:nil];
[[self navigationController] pushViewController:nextViewController animated:YES];
[nextViewController release];
Run Code Online (Sandbox Code Playgroud)
在我这样做之后,我假设导航控制器拥有该对象的所有权,并在完成时将其释放,然后在我的customViewController上调用dealloc.当我点击导航栏上的后退按钮并且不再显示视图时,我希望会发生这种情况.但这不会发生.我在一个CustomViewController的dealloc方法中添加了一个NSLog(@"CustomViewController确实收到了dealloc"),但它永远不会被打印出来.这是正常的行为吗?
导航控制器是否只是在保留该对象以防万一在某些时候需要它?当内存开始耗尽时它会摆脱它吗?我尝试模拟低内存警告但没有任何反应.我有一种感觉,这个问题的答案是我不应该太担心并遵循保留/释放/自动释放的标准程序.尽管如此,是否还有其他人深入研究了这一点并找到了绝对答案?
Ste*_*ntz 14
"导航控制器是否只是在保留该对象,以防它在某些时候需要它?"
对.这正是它正在做的事情.它会发送给你viewDidLoad
和viewDidUnload
消息.这是您应该分配和释放viewcontroller使用的资源的地方.
请注意,viewDidUnload
只有在系统认为需要释放内存时才会调用它.
如果您需要更直接的控制何时加载和释放的东西,那么一个更好的地方可能是viewWillAppear:
和viewDidDisappear:
.
我对viewcontrollers的alloc/init方法通常很空或者甚至没有.
归档时间: |
|
查看次数: |
4514 次 |
最近记录: |