我该如何解决这个内存泄漏问题?

时间:2010-12-11 18:57:59

标签: objective-c memory-leaks nsstring analyzer alloc


这是我的片段:

- (id) initWithFrame:(CGRect)frame andConfig:(PGParams*) params 
{

 for (int i=0; i<[conf.map count]; i++) 
  [conf.map replaceObjectAtIndex:i withObject:
      [[NSString alloc] initWithFormat:@"%@&sito=%@", 
       [conf.map objectAtIndex:i], [params sito]]];

 for (int i=0; i<[conf.orto count]; i++) 
   [conf.orto replaceObjectAtIndex:i withObject:
      [[NSString alloc] initWithFormat:@"%@&sito=%@", 
       [conf.orto objectAtIndex:i], [params sito]]];

 for (int i=0; i<[conf.mix count]; i++) 
    [conf.mix replaceObjectAtIndex:i withObject:
      [[NSString alloc] initWithFormat:@"%@&sito=%@", 
       [conf.mix objectAtIndex:i], [params sito]]];

}

使用RUN_CLANG_STATIC_ANALYZER选项( Property-&gt; Build Options-&gt; Run Static Analyzer )编译此代码,它会显示[[NSString alloc] ...上的泄漏。

  

RUN_CLANG_STATIC_ANALYZER

激活此设置将使Xcode在合格的源文件上运行Clang静态分析工具。该工具目前支持C和Objective-C文件。 [RUN_CLANG_STATIC_ANALYZER]


我该如何解决?

提前谢谢,
allberto

1 个答案:

答案 0 :(得分:3)

右。你正在分配一个你拥有的对象(因为你调用了+alloc),但是你永远不会释放它。

您可以将[[NSString alloc] initWithFormat:...]的所有实例替换为[NSString stringWithFormat:...]以修复泄漏。