我看到以下日志......
“__ NSAutoreleaseNoPool():类UITableViewCellContentView的对象0x58264b0自动释放,没有池到位 - 只是泄漏”
这是一个巨大的发布池日志,上面只是我复制的发布日志之一...
我有一个CustomCell,根据业务逻辑将tile添加到自身中。但问题是当我调用单元格的创建时,我看到上面的日志消息。我没有看到我的代码有什么问题..有没有人对它有任何线索?
- (UITableViewCell *) tableView:(UITableView *)inTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UnSavedNoteListCell *cell;
NSString *CellIdentifier = [@"Cell_" stringByAppendingString:[NSString stringWithFormat:@"%d", indexPath.row]];
cell = (UnSavedNoteListCell *)[inTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
NSMutableArray *cellProgressNoteCollection = [self getcellProgressNoteCollectionForLandScape:indexPath];
cell = [[[UnSavedNoteListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier cellTiles:cellProgressNoteCollection] autorelease];
cell.backgroundColor = [UIColor clearColor];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
// cell.textLabel.text = [NSString stringWithFormat:@"%d", rand()];
// cell.textLabel.textColor = [UIColor redColor];
// Configure the cell...
return cell;
}
答案 0 :(得分:0)
我注意到的一件事是你没有重复使用任何你的uitableviewcells,所以你可能会受到很大的打击。在上面的代码中,您将为每一行创建一个新的单元格标识符。试试这个:
- (UITableViewCell *) tableView:(UITableView *)inTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"Cell";
UnSavedNoteListCell *cell = (UnSavedNoteListCell *)[inTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
NSMutableArray *cellProgressNoteCollection = [self getcellProgressNoteCollectionForLandScape:indexPath];
cell = [[[UnSavedNoteListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier cellTiles:cellProgressNoteCollection] autorelease];
cell.backgroundColor = [UIColor clearColor];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
return cell;
}
这样,您的tableview可以维护一个标记为可重用的tablecells列表。
答案 1 :(得分:0)
更好的问题是为什么你没有自动释放池。
以下是您在该代码中进行的一些可能需要自动释放池的调用。 (其中有些可能不会,实际上。):
stringByAppendingString
stringWithFormat
dequeueReusableCellWithIdentifier
autorelease
getcellProgressNoteCollectionForLandScape
(如果是按惯例编写的)clearColor
(理论上,但可能不是)UIKit需要自动释放池。
我看到了两个可能的原因: