这是我的第一篇文章,所以我希望格式化正常。
我得到这个泄漏“物体在线泄漏”,我无法弄明白。也许我太难看了,所以我看不出问题。有人可以帮助我吗?
问题是:appDelegate.imageText
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
PListFirstAppDelegate *appDelegate = (PListFirstAppDelegate *)[[UIApplication sharedApplication]delegate];
appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]];
//NSLog(@"%@", appDelegate.imageText);
NavigationalDescription *detailViewController = [[NavigationalDescription alloc] initWithNibName:@"NavigationalDescription" bundle:nil];
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
答案 0 :(得分:1)
每次使用任何init方法实例化对象时,都必须在某处释放它,或者调用autorelease。
返回内容的类方法应始终自动释放。
所以不要使用[[NSString alloc] initWithFormat...]
改为[NSString stringWithFormat:@"%@", myString]
。
答案 1 :(得分:1)
替换
处的代码 appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]];
带
appDelegate.imageText= [NSString stringWithFormat:@"%@",[[array objectAtIndex:indexPath.row] objectForKey:@"image"]];
答案 2 :(得分:0)
您应该在该行的末尾添加自动释放调用。 iPad不会让我复制粘贴代码:(现在没有例子。
appDelegate.imageText= [[[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"] ] autorelease];
您说要将对内存管理的控制权委托给imagetext实例。他们应该在需要时保留字符串。
答案 3 :(得分:0)
appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]];
您正在为图像文本属性分配已分配的字符串。属性赋值应该是一个自动释放的字符串。 imageText应该是一个retain属性,因此保留了赋给它的字符串的值。如果保留,则双重保留,因此泄漏物体。