3

我有一个具有扩展部分的 UITableView。当用户第一次加载表视图时,每个部分的父记录都会被加载。当用户按下父单元格时,我从数据库中检索子数据,然后使用将新单元格插入表视图中

[tableView insertRowsAtIndexPaths:expandCollapseArr withRowAnimation:UITableViewRowAnimationTop];

然后,如果用户再次单击父单元格,则使用删除子单元格

[tableView deleteRowsAtIndexPaths:expandCollapseArr withRowAnimation:UITableViewRowAnimationNone];

上面的代码按预期工作。问题是在 iOS 7 上,使用 ARC,插入和删除的单元格永远不会从内存中删除,即使在破坏 UitableView 和 UIViewController 本身之后也是如此。使用应用程序一段时间后,将抛出内存警告,应用程序将崩溃。

如果我取出 insertRowsAtIndexPaths 和 deleteRowsAtIndexPaths 调用,并且[tableView reloadData]每次都调用,那么一切正常,并且当我完成视图控制器时所有内存都会被释放,但随后我会松开插入和删除动画。

insertRowsAtIndexPaths使用and时似乎存在本机内存泄漏deleteRowsAtIndexPaths

有没有其他人遇到过这个问题?

这里我正在使用的重用标识符代码......

NSString *searchStr = @"Store ";
NSRange match = [displayString rangeOfString: searchStr];
if (match.location == NSNotFound) {
        CellIdentifier = [NSString stringWithFormat:@"Cell%@%@", displayString, TBL_NAME];
} else {
        CellIdentifier = [NSString stringWithFormat:@"Store%@", TBL_NAME];
}

ExpandableTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil ) { 
    cell = [[ExpandableTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; }
4

0 回答 0