Domanda

Strumenti mi dice che c'è una perdita di memoria in questo codice, ma io non riesco a trovarlo .... aiuto? scusate o il newbie domanda.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    int altoBufferCelda = 26;
    Mensaje *msg = (Mensaje *)[model.mensajes objectAtIndex:indexPath.row];

    CGSize txtSize = [msg.texto sizeWithFont:[UIFont systemFontOfSize:17.0f] constrainedToSize:CGSizeMake(222, 222)  lineBreakMode:UILineBreakModeTailTruncation];

    [alturasDinamicas setObject:[NSNumber numberWithFloat:(txtSize.height + altoBufferCelda)] forKey:[NSNumber numberWithInt:indexPath.row]];

    return txtSize.height + altoBufferCelda;     
}
È stato utile?

Soluzione

Direi:     [NSNumber numberWithFloat]

Si assegnerà un oggetto autoreleased per voi. L'iPhone non è garbage collection, appena raccolti riferimento. E dal momento che non stanno rilasciando la memoria si assegnano prima di lasciare il metodo, strumenti sta segnalando come una perdita.

Dal momento che questo è attualmente accettato, io sorta di cambiare la mia risposta.

Gli strumenti non è un editto divino. Potrebbe essere sbagliato. Utilizzare come un forte orientamento di ciò che si dovrebbe guardare, ma se onestamente non si può trovare niente di sbagliato o che perde con il codice, basta andare avanti.

Altri suggerimenti

Non riesco a vedere alcuna perdita di memoria nel codice. Come sottolinea toast, strumenti non è sempre preciso. Ciò è in gran parte perché anche il codice dai quadri di Apple contiene le perdite di memoria, che sono riportati dal Instruments troppo.

Se si sta utilizzando XCode 3.2 è possibile scegliere creare e analizzare dal menu Genera, che esegue la scansione del codice per errori normalmente inosservati dal compilatore. Questo ti mostrerà molte perdite possibili di memoria derivanti da dimenticare per rilasciare un oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top