1

在某些时候,我分配了一个 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]

发生在哪里?

4

1 回答 1

0

谜底解开了。。这是一个比较大的方法,所以我没有意识到[数据发布];是在一个循环,它的分配不是。那是导致僵尸的原因。

于 2011-01-07T10:12:24.557 回答