2012-08-17 228 views
0

这是我的第一篇文章,所以我希望格式化可以。内存泄漏:在线分配的对象的潜在泄漏

我得到这个泄漏“上线的对象的潜在泄漏”,我无法弄清楚。也许我太看重它,因此我看不到问题。有人可以帮我吗?

该生产线的问题是: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

你应该在该行的末尾添加一个自动调用。 的iPad不会让我复制粘贴代码:(所以现在没有一例。

appDelegate.imageText= [[[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"] ] autorelease]; 

你的意思是委托在内存管理的imagetext实例的控制。他们应该保留字符串作为他们需要它。

+0

感谢这个工作替换代码。 – user1309075 2012-10-08 16:56:27

+0

很高兴它的工作,你应该接受一个答案供他人以后参考。 – rooftop 2012-10-08 18:17:01

0
appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]]; 

要指定一个分配的字符串图像文本财产。财产分配应该是一个自动释放的字符串。i​​mageText应该是保留财产,因此保留字符串的falue被分配给它。如果它保留,你是双重保留,因此泄漏物体。

1

每次使用任何init方法实例化对象时,都必须在某处释放它,或者调用autorelease。

类方法返回的东西应该总是自动释放。

因此,而不是使用[[NSString alloc] initWithFormat...]

[NSString stringWithFormat:@"%@", myString]代替。

1

appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]]; 

appDelegate.imageText= [NSString stringWithFormat:@"%@",[[array objectAtIndex:indexPath.row] objectForKey:@"image"]]; 
+3

如果您正在开发新项目,那么如果您可以开始使用ARC,那将会很棒。 – 2012-08-17 17:54:48