我在TableViewCell中有UIImage插座,稍后我将在UITableView中使用它。当我在仪器中检查这个时,我在UIImageView上得到了一些内存泄漏。我没有在UITableViewCell中发布UIImageView,因为如果我在tavleViewCell中发布它,我会得到exc_bad_access。
我的问题是我在哪里发布这个UIImageView?
更新
CustomCell.h
@interface CustomCell : UITableViewCell {
IBOutlet UIImageView *customImage;
}
@property(nonatomic, retain) UIImageView *customImage;
@end
CustomViewController.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.customImage.hidden = [[self.customImageList objectAtIndex:indexPath.row] boolValue];
return cell;
}
答案 0 :(得分:0)
UITableView缓存单元格以供以后重用。这显示为内存泄漏,但您最终可以重用该单元,因此它不会真正泄露。
当单元格滚动离开屏幕时,您可以执行的是释放自定义UITableViewCell保留的图像视图,但如果在滚动时再次需要图像,则可能导致性能问题。
答案 1 :(得分:0)
首先,让我们来定义你的意思。当我们谈论真正的内存泄漏时,那就是堆已经分配但是在代码中的任何地方都没有任何指针。它真的泄露,丢失,不能重复使用。如果泄漏工具将其识别为泄漏,这意味着它就是这种泄漏,这不仅仅是一种泄漏,而不像某些人所说的那样是漏洞。
如果你没有在泄漏工具中看到它,那么它仍然可能是泄漏,或者可能是另一种类型的内存问题,有些也称为内存泄漏,例如废弃的内存。
在任何情况下,请告诉我们是什么让您称之为泄密,您需要发布代码以获得更多帮助。
答案 2 :(得分:-1)
尝试将其设置为nil
,即在dealloc:
self.imageViewName = nil;