0
我基於xib文件programmaticaly創建UIViews
,並將它們添加到scrollView
。這工作到目前爲止。如果數量發生變化,我重新創建了網格UIViews
(在我的情況下稱爲主題大拇指)。我在重新創建新的之前刪除舊的。問題是內存永遠不會釋放,並且每一個新創建的內存使用都會堆積如山。即使我刪除了一個拇指,內存也不會被釋放。UIView不autoreleased。我的問題在哪裏?
儀器不顯示泄漏。 Dealloc
在我的ViewController
永遠不會被調用。我使用ARC
,我知道我必須避免保留的引用。但很明顯,我已經使用過它們,但不明白它在哪裏。如果有人能夠給我一個提示,我會在這裏閱讀很多帖子,但仍然不理解。 NSZombiesEnabled
已關閉。
我的代碼:
-(void)createGrid
{
for (UIView *subview in self.scrollView.subviews) {
if ([subview tag] < 10000 && ![subview isKindOfClass:[UIImageView class]]) {
[subview removeFromSuperview];
}
}
int col = 0;
int row = 0;
[self setupFetchedResultsController];
for (int i = 0; i<[[self.fetchedResultsController fetchedObjects] count]; i++)
{
col = i % THEME_COLUMNS;
row = i/THEME_COLUMNS;
ThemeThumbVC *themeThumb = [[ThemeThumbVC alloc] init];
[self.scrollView addSubview:themeThumb.view];
// configurate thumb
themeThumb.managedObjectContext = self.managedObjectContext;
themeThumb.fetchedResultsController = self.fetchedResultsController;
themeThumb.theme = [[self.fetchedResultsController fetchedObjects] objectAtIndex:i];
[themeThumb.themeThumbImage setImage:[UIImage imageWithContentsOfFile:[[[self.fetchedResultsController fetchedObjects] objectAtIndex:i] iconImageURL]]];
[themeThumb setTag:i];
[themeThumb.view setTag:i];
[themeThumb.view setFrame:CGRectMake(col*kThemeGritXOffset+(col*1), row*kThemeGritYOffset, kThemeGritXOffset+1, kThemeGritYOffset)];
[self addChildViewController:(UIViewController*) themeThumb];
}
[self.scrollView setContentSize:CGSizeMake(320, row*kThemeGritYOffset+kThemeGritYOffset)];
}
我沒有添加子視圖控制器的嘗試。它沒有解決它。但也許有幾個保留對象。 是的UICollectionViewController會很好,但我的客戶也想在iOS 5.1上運行它,所以我不得不自行開發網格。希望這將在未來有時會改變,但現在我必須保持這樣。 – rockstarberlin
我又試了一次,發現它實際上就是你提到過的:'addChildViewController'是設置剩餘參考的點。謝謝您的意見! – rockstarberlin