【发布时间】:2013-10-08 18:39:05
【问题描述】:
我以编程方式基于 xib 文件创建UIViews,并将它们添加到scrollView。到目前为止,这有效。如果数量发生变化,我会重新创建UIViews 的网格(在我的例子中,所谓的主题拇指)。在重新创建新的之前,我会删除旧的。问题是内存永远不会被释放,并且每次新创建的内存使用都会堆积起来。即使我移除一个拇指,内存也不会被释放。
仪器不显示泄漏。我的ViewController 中的Dealloc 永远不会被调用。
我使用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)];
}
【问题讨论】:
标签: ios reference automatic-ref-counting retain autorelease