在iOS 5.1上滚动时UITableView内存泄漏
每次滚动UITableview时,都会出现48字节的内存泄漏。 负责图书馆:libsystem_c.dylib 负责框架:strdup 这仅在iOS 5.1上观察到,而在早期版本上没有观察到。 还有其他人面临同样的问题吗?这是iOS 5.1中的一个bug吗 代码:在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返回以供重
这可能是由于您处理单元格标识符的方式造成的。实际上,我很惊讶它没有崩溃,因为您发布了
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];
}
...
}