2011-12-13 70 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开始。