在iOS 5.1上滚动时UITableView内存泄漏

在iOS 5.1上滚动时UITableView内存泄漏,ios,uitableview,memory-leaks,Ios,Uitableview,Memory Leaks,每次滚动UITableview时,都会出现48字节的内存泄漏。 负责图书馆:libsystem_c.dylib 负责框架:strdup 这仅在iOS 5.1上观察到,而在早期版本上没有观察到。 还有其他人面临同样的问题吗?这是iOS 5.1中的一个bug吗 代码: 这可能是由于您处理单元格标识符的方式造成的。实际上,我很惊讶它没有崩溃,因为您发布了CellIdentifier,但在创建新单元格时引用了它(即当单元格没有从dequeueReusableCellWithIdentifier返回以供重

每次滚动UITableview时,都会出现48字节的内存泄漏。 负责图书馆:libsystem_c.dylib 负责框架:strdup

这仅在iOS 5.1上观察到,而在早期版本上没有观察到。 还有其他人面临同样的问题吗?这是iOS 5.1中的一个bug吗

代码:


这可能是由于您处理单元格标识符的方式造成的。实际上,我很惊讶它没有崩溃,因为您发布了
CellIdentifier
,但在创建新单元格时引用了它(即当单元格没有从
dequeueReusableCellWithIdentifier返回以供重用时)

使用单元格标识符的标准/公认方法是使用静态标识符(因为它永远不会改变,并且只会分配一次,而不会分配100次,因为滚动表格时会不断调用
cellforrowatinexpath
)。这将使您的代码更加高效

i、 e


您能否尝试更改
cellIdentifier
并查看是否仍然存在泄漏?

我认为您遇到了iOS 5.1上已报告的此问题。我自己也有。目前,我无法在苹果的论坛上找到关于这个问题的链接。

是否显示一些代码?CellForRowatineXpath:方法将是最有趣的。。。您是否在项目中使用了ARC?您是否使用了没有自定义代码的默认实现?是内存泄漏,还是稍后才清除内存(因为自动释放对象)。@Jayde3,我用基本表视图测试了一个简单的应用程序,但内存泄漏仍然存在。我也看到了这个问题,在一些罕见的情况下,当一直向上滚动并反弹,然后一直向下滚动时,它会导致几次泄漏,有一次,它用SIGKILL终止了应用程序。您好,我尝试了cellIdentifier的静态NSString,但在滚动tableView时仍然得到相同的内存泄漏。您看到哪个类/类型在泄漏吗?仪器显示的是什么?我还遇到了一些参考资料,指出这是iOS 5.1中的一个已知问题,例如:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath(NSIndexPath *)indexPath 
{
    NSString *cellIdentifier = [[NSString alloc] initWithString:@"fontSelectionCell"];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    [cellIdentifier release];

    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
    }       

    cell.textLabel.text = [fontNameList objectAtIndex:[indexPath row]];
    cell.selectionStyle =UITableViewCellSelectionStyleGray;
    cell.textLabel.font = [UIFont systemFontOfSize:17.0];

    if ([fontName isEqualToString:cell.textLabel.text])
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        cell.textLabel.textColor = [UIColor blueColor];

    }
    else
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
        cell.textLabel.textColor = [UIColor blackColor]; 
    }

    return cell;
}
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    static NSString *cellIdentifier = @"fontSelectionCell";

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

   ...
}