我有大量的视图/视图控制器层次结构。
在主控制器中,我有以下代码,其中 aViewController 是 MyClass 的成员:
@implementation MyClass
...
- (void) viewDidLoad
{
[self.view addSubview:aViewController_.view];
[aViewController_ setDataSource:self];
[aViewController_ setDelegate:self];
}
- (void)dealloc
{
//[aViewController_.view removeFromSuperview]; // All ok when this is added
[aViewController_ release];
[super dealloc];
}
...
@end
运行它时,我看到它aViewController
永远不会被释放 - 保留计数最后仍然是 1。
如果我添加[aViewController_.view removeFromSuperview];
到 dealloc 中,一切正常。
为什么是这样?不[super dealloc]
应该关心视图的释放吗?在控制器之后释放视图是否重要?
我试图用一个简单的测试应用程序重现,但没有任何运气。