Perdita di memoria quando analizza la stringa JSON usando SBJSON
-
29-10-2019 - |
Domanda
Sto usando il seguente codice per analizzare JSON e ottenere perdite di memoria (100%) sul numero di riga 2. Non so qual è il problema, qualcuno può aiutarmi?
NSString *response = [request responseString];
NSMutableDictionary *responseJSON = [response JSONValue]; (100% leak)
NSString *tockenString = [responseJSON objectForKey:@"Token"];
NSString *userIDString = [responseJSON objectForKey:@"ID"];
Soluzione
Ho trovato la risposta. Vai a SBJSONPARSER.M Function ScanRestofString e cambia la linea
da
*o = [[NSMutableString alloc] initWithBytes:(char*)c length:len encoding:NSUTF8StringEncoding];
a
*o = [[[NSMutableString alloc] initWithBytes:(char*)c length:len encoding:NSUTF8StringEncoding] autorelease];
SBJSONPARSER ha un like in scanresofstring/nsmutablestring. Ho segnalato anche il bug. Grazie a tutti.
Altri suggerimenti
Rimuovi quelle 2 autorelease. Hanno sovraccarico gli oggetti.
Ho avuto un problema simile, ma si è scoperto che la perdita era in realtà più alta nella catena di metodi, ma gli strumenti erano (erroneamente) indicando questa linea. Guarda i metodi che memorizzano i risultati recuperati da questo codice.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow