奇怪的内存问题
问题描述:
在某些时候,我分配一个NSMutableData元素是这样的:奇怪的内存问题
NSMutableData* data=[[NSMutableData alloc] initWithLength:0];
后来,我做的:
NSString *dataAsStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] ;
completeCommand = [NSString stringWithFormat:@"%@%@",
incompleteMessage,
[dataAsStr substringWithRange:NSMakeRange(startIndex, i-startIndex)]];
[incompleteMessage release];
incompleteMessage = nil;
[dataAsStr release];
最后,我呼吁:现在根据
[data release]; //Here I get a BAD_ACCESS error since data gets a release count of -1
到乐器(支持僵尸的分配),第二块的第一行NSString * dataAsString = ...调用[数据发布]
这是怎么回事?
答
这个神秘的东西被解决了.. 它是一个相当大的方法,所以我没有意识到[data release];在一个循环中,它的分配不是。这是造成僵尸。
你可以发布完整的方法,似乎这个问题不在发布代码的范围内。 – Manny 2011-01-05 11:37:59
尝试[[NSMutableData alloc] init]。也许它有帮助。 – burki 2011-01-05 12:13:18
在使用dataAsStr进行数据处理之前,您正在做什么? – 2011-01-05 12:20:04