我有一个UITableView,它有扩展部分。当用户首次加载表视图时,将加载每个部分的父记录。当用户按下父单元格时,我从数据库中检索子数据,然后使用
将新单元格插入表格视图[tableView insertRowsAtIndexPaths:expandCollapseArr withRowAnimation:UITableViewRowAnimationTop];
然后,如果用户再次单击父单元格,则使用
删除子单元格[tableView deleteRowsAtIndexPaths:expandCollapseArr withRowAnimation:UITableViewRowAnimationNone];
上面的代码按预期工作。问题是在iOS 7上,使用ARC,即使在将UitableView和UIViewController本身去掉后,插入和删除的单元格也永远不会从内存中删除。在使用该应用程序后,将抛出内存警告,应用程序将崩溃。
如果我取出insertRowsAtIndexPaths和deleteRowsAtIndexPaths调用,并且每次只调用[tableView reloadData]
,一切正常,当我完成视图控制器时,所有内存都被释放,但随后我松开插入并删除动画。
使用insertRowsAtIndexPaths
和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]; }