Strano problema di memoria
-
25-09-2019 - |
Domanda
A un certo punto allocare un elemento NSMutableData così:
NSMutableData* data=[[NSMutableData alloc] initWithLength:0];
Più tardi, ho fare:
NSString *dataAsStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] ;
completeCommand = [NSString stringWithFormat:@"%@%@",
incompleteMessage,
[dataAsStr substringWithRange:NSMakeRange(startIndex, i-startIndex)]];
[incompleteMessage release];
incompleteMessage = nil;
[dataAsStr release];
E finalmente ho chiamata:
[data release]; //Here I get a BAD_ACCESS error since data gets a release count of -1
Ora secondo gli strumenti (Assegnazioni con supporto zombie), la prima riga del secondo blocco NSString * dataAsString = ... chiamate [rilascio dati]
Quando succede questo?
Soluzione
Il mistero è risolto .. La sua una piuttosto grande metodo, quindi non mi rendo conto che [il rilascio dei dati]; era in un ciclo e la sua malloc non era. Che stava causando lo zombie.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow