奇怪的记忆问题

时间:2011-01-05 10:26:37

标签: iphone memory-management nszombie nsmutabledata

在某些时候,我会像这样分配一个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

现在根据乐器(Zombie支持分配),第二个块的第一行NSString * dataAsString = ...调用[数据发布]

这发生在哪里?

1 个答案:

答案 0 :(得分:0)

这个谜团已经解决了.. 它是一个相当大的方法,所以我没有意识到[数据发布];在一个循环中,它的malloc不是。这导致了僵尸。