- [NSString componentsSeparatedByString:]泄漏

时间:2010-11-28 06:30:51

标签: iphone objective-c cocoa-touch memory-management

我有以下代码:

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中查看内存使用情况;仪器未检测到泄漏。泄漏只是一种幻觉,模拟器的特性吗?

1 个答案:

答案 0 :(得分:7)

内存无法真正泄露,componentsSeperatedByString:会返回自动释放的NSArray

当谈到这些事情时,信任工具。