当用户单击任何行时,我有一个 UITableView 进行修改(删除一行并插入一行)。内存释放在 iOS6 及更早版本中效果很好,但 iOS7 不会释放 tableview。这是我的代码的基础知识。我已经大大减少了代码,但问题仍然存在。
- (void)tableView:(UITableView *)intableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[intableView beginUpdates];
[intableView endUpdates];
}
开始/结束更新导致内存被保存在某个地方。如果我在这个函数中插入或删除行(连同背景数据数组),也是一样的。我只添加了 UITableView 和单元格子类:
-(void)dealloc
{
NSLog(@"deallocated %@",[self class]);
}
这样我就可以看到它们何时被释放。我们不应该再更新选择的表格视图了吗?它是否在另一个线程中?(我尝试过dispatch_async
不同的线程)
我可以发布更多代码,但我当前的代码看起来就像我发布的一样,它仍然以某种方式保留在 tableview 上而不是释放它。