我有一个viewcontroller,进入这个我添加了几个子视图到他的视图,添加数组(数组 - 父视图控制器的属性),并没有发布子视图现在添加,但释放他们dealloc。我对有关内存泄漏的消息感到尴尬。我如何找到解决内存管理问题的方法?谢谢!内存泄漏警告
-(void)someMethod
{
for(<<something in something>>)
{
ValidationColumnViewController *controller = [[ValidationColumnViewController alloc] initWithFrame:CGRectMake(columnsInitialX, 5, validationColumnWidth, validationColumnHeight) andValidationColumn:column withMaxCellsCount:maxCellsCountForValidationColumns];
[gameFieldView addSubview:controller.view];
[validationColumnViewControllers addObject:controller];
}
}
-(void)dealloc
{
for(ValidationColumnViewController *controller in validationColumnViewControllers)
{
[controller release];
}
}
so bad :(NSDictionary是什么而不是NSArray? – Arsynth
使用数组没有问题(向字典中添加对象也会增加它的保留数量)只要确保您释放的东西多次保留即可可以打印retainCount(这是一个NSObject属性)来检查(但是,一旦对象被释放,这个值是没有意义的,所以不要使用它,除非它意味着> 0)。 – jbat100
如果你认为'[gameFieldView addSubview:controller。 view];'是一个问题,那么在ValidationColumnViewController中dealloc做'[self。查看removeFromSuperview];'。但我认为这可能不是问题。我的猜测是,当上面的代码所在的类被释放时,gameFieldView将会被释放,并且直到那时ValidationColumnViewControllers才会被保留。 – morningstar