我有以下代码:
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];我在indexText上执行componentsSeparatedByString:,但我泄漏了相当多的内存,尽管packageList是自动释放的(事实证明,如果我再次尝试释放它,代码就会崩溃)。当我用componentsSeparatedByString:注释掉这行代码时,泄漏就消失了。
顺便说一下,我在运行iPhone模拟器的同时在活动监视器中查看内存使用情况;仪器没有检测到泄漏。泄漏只是一种幻觉,是模拟器的特性吗?
发布于 2010-11-28 14:40:39
内存不可能真的泄漏了,componentsSeperatedByString:会返回一个自动释放的NSArray。
当涉及到这些事情时,信任工具。
https://stackoverflow.com/questions/4295699
复制相似问题