对于那些试图阅读这个问题的人来说,我和Jonas之间已经进行了广泛的讨论,并且在讨论过程中问题已经多次改变,因此重申我们在这里所做的一切都没有用处。如果您在阅读崩溃日志时遇到问题,请参阅stackoverflow上的this问题!谢谢你的理解。
Jonas:这是我上次评论中提到的代码段:
if ([performance.favorites integerValue] == 1) {
UIImage *starImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"fav-star" ofType:@"png"]];
cell.favoritesImage.image = starImage;
}
else
{
cell.favoritesImage.image = nil;
}
因此,如果else
块被执行,如果正在释放未显示收藏夹Image的TableViewCell,那会导致[favoritesImage release]
调用崩溃吗?
所以我可以简单地将它添加为nil添加一个alpha设置为0的随机图像以获得相同的效果但没有任何内存泄漏?
答案 0 :(得分:0)
“阅读”崩溃报告并不总是那么容易。 你发送的两个没有显示任何“自己编码”的方法。
你有“EXC_BAD_ACCESS”,所以我会说:“这是一个内存释放/保留问题”: 你可以早点发布一些UITableView。
您是否检查过UITableViewCell是否已正确自动释放? UITableViewCell中的所有子视图和对象是自动释放还是至少未发布到0?
更多详情:
1)我永远不会通过NIB / XIB创建UITableViewCell子类。你失去了很多表现。我建议你通过编码创建UITableViewCell子类。 请记住:XIB(xml)的缩小需要时间,当您滚动UITableView时,可能会出现难看的扭曲。
2)对于你的内存问题:检查一下:How do you load custom UITableViewCells from Xib files? autorelease不是正确的。