为什么这行会泄漏内存?

时间:2011-10-31 22:33:59

标签: iphone objective-c memory-management

[row setObject:[NSString stringWithCString:value encoding:NSUTF8StringEncoding] forKey:columnName];

其中row是一个NSMutableDictionary ..有没有不同的方法将这个字符串注入我的字典?

2 个答案:

答案 0 :(得分:1)

分析工具说因为字符串是“自动释放的”,所以你可以通过

优化它
  • 在其周围放置一个NSAutoreleasePool
  • 分配/初始化str然后释放它
  • 或者只是忽略优化信息。

这是一种方式:

NSString *str = [[NSString alloc] initWithCString:value encoding:NSUTF8StringEncoding];
[row setObject:str forKey:columnName];
[str release];

答案 1 :(得分:0)

之前我遇到过这个问题,因为NSMutableDictionary拥有的对象在释放词典之前不会被释放。

我建议你的代码中某个对象在没有正确释放它拥有的变量的情况下被释放,可能是NSMutableDictionary *row