iOS7 UITableView内存泄漏

时间:2013-10-09 14:21:46

标签: uitableview ios7 memory-leaks

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

将新单元格插入表格视图
[tableView insertRowsAtIndexPaths:expandCollapseArr withRowAnimation:UITableViewRowAnimationTop];

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

删除子单元格
[tableView deleteRowsAtIndexPaths:expandCollapseArr withRowAnimation:UITableViewRowAnimationNone];

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

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

使用insertRowsAtIndexPathsdeleteRowsAtIndexPaths时,似乎存在本机内存泄漏。

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

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

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]; }

0 个答案:

没有答案