2011-08-24 46 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