我有以下代码:
NSString *indexText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (indexText==nil) {
[indexText release];
indexText = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
}
[data release];
NSAutoreleasePool *innerPool = [NSAutoreleasePool new];
NSArray *packageList = [indexText componentsSeparatedByString:@"\n\n"]; //if commented out, there's no leak
[indexText release];
[innerPool drain];
我正在componentsSeparatedByString:
上执行indexText
,但是我泄漏了相当多的内存,尽管事实packageList
是自动释放的(事实证明代码崩溃,如果我试着再次发布它。当我用componentsSeparatedByString:
注释掉这一行时,泄漏就会消失。
顺便说一下,我正在运行iPhone模拟器时在Activity Monitor中查看内存使用情况;仪器未检测到泄漏。泄漏只是一种幻觉,模拟器的特性吗?
答案 0 :(得分:7)
内存无法真正泄露,componentsSeperatedByString:
会返回自动释放的NSArray
。
当谈到这些事情时,信任工具。