我有一個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