2011-01-05 139 views
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 = ...調用[數據發佈]

這是怎麼回事?

+2

你可以發佈完整的方法,似乎這個問題不在發佈代碼的範圍內。 – Manny 2011-01-05 11:37:59

+0

嘗試[[NSMutableData alloc] init]。也許它有幫助。 – burki 2011-01-05 12:13:18

+1

在使用dataAsStr進行數據處理之前,您正在做什麼? – 2011-01-05 12:20:04

回答

0

這個神祕的東西被解決了.. 它是一個相當大的方法,所以我沒有意識到[data release];在一個循環中,它的分配不是。這是造成殭屍。