2011-08-24 48 views
-2

我在NSString上有很多泄漏。我使用appendformat将字符串附加到它。NSString泄漏附加格式

下面的代码:

NSString *textedetails = [[NSMutableString alloc] init]; 
     if([dico objectForKey:@"alertSerie"] != nil) 
      {[textedetails appendFormat:@"Numéro de Série: %@ \n",[dico objectForKey:@"alertSerie"]];} 
     if([dico objectForKey:@"alertDate"] != nil) 
      {[textedetails appendFormat:@"Date de mise en service: %@ \n",[dico objectForKey:@"alertDate"]];} 
     if([dico objectForKey:@"alertCli"] != nil) 
      {[textedetails appendFormat:@"Nom du client associé: %@ \n",[dico objectForKey:@"alertCli"]];} 

... //我把textdetails成的UITextField和... [textedetails发布];

该代码给我泄漏在第一和上面的代码的最后一行...

和泄漏的PRINTSCREEN是HERE !!!

非常感谢帮助我!

+0

运行分析您的代码。 – zaph

+0

完成后释放字符串。 –

+2

我想你的问题已经被低估了,因为你没有直接将代码放入问题中和/或因为它是一段很长的代码,没有明显的努力来隔离问题。 – Codo

回答

2
NSString *textedetails = [[NSMutableString alloc] init]; 
NSMutableString *texterecap = [[NSMutableString alloc] init]; 

这两个都没有发布。

试试这个

NSString *textedetails = [[[NSMutableString alloc] init] autorelease]; 
NSMutableString *texterecap = [[[NSMutableString alloc] init] autorelease]; 

或本

NSMutableString *textedetails = [NSMutableString string]; 
NSMutableString *texterecap = [NSMutableString string]; 
+0

NSString * textedetails = [NSMutableString string];是错误的,使用:NSMutableString * textedetails = [NSMutableString string]; – zaph

+0

我appologies :)更新我的帖子 – Vlad

+0

好的谢谢。我也试过,但它仍然一次又一次地泄漏在最后的“appendformat”... – clement

1

方法appendFormat不是直接泄漏。这仅仅是一个后续故障,因为NSMutableString实例从未被释放。

我看到你创建一个NSMutableString实例与两个位置:

... = [[NSMutableString alloc] init]; 

这些实例必须某处释放。

+0

好的谢谢。但我释放它的方法后,它仍然泄漏: -/ – clement

0

您可以尝试在完成使用后立即释放变量“textedetails”和“texterecap”。

+0

这就是我所做的,但... – clement