2011-12-13 69 views
0

在我的XML解析方法找到字符的委託方法的應用,我使用休耕代碼潛在泄漏

NSString *Str = [[[NSString alloc] initWithString:foundString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] ; 

if ([weekNames containsObject:elementName]) { 
    // if (!settings) { 
    // NSMutableDictionary *dict1=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"",@"no",@"بسم الله الرحمن الرحيم",@"surah",nil]; 

     // [weekDict insertObject:dict1 atIndex:0];    
    //} 
    [array1 addObject:weekDict]; 
} 
if ([elementName isEqualToString:@"DUA"]) { 
    [weekDict addObject:duaDict]; 
} 
if ([elementName isEqualToString:@"NO"]) { 
    [duaDict setObject:Str forKey:@"no"]; 
} 
if ([elementName isEqualToString:@"SURAH"]) { 
    [duaDict setObject:Str forKey:@"surah"];  
} 
foundString=nil;** 

如果我用這個代碼在分析應用程序,我得到potent6ial內存泄漏。 如果我自動釋放條紋它會釋放太多時間。 爲什麼會發生這種情況。請任何人幫助我。 在此先感謝

+0

你在哪個對象中發生內存泄漏? – utsabiem

回答

1

此:

NSString *Str = [[[NSString alloc] initWithString:foundString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] 

真的應該是:

NSString *Str = [foundString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

你現在正在做的是創造(分配/初始化)一個新的NSString,然後立即泄漏,因爲你永遠不會保存指針。事實證明,你從來沒有真正需要那個NSString開始。