Je courais le code suivant dans tableView: cellForRowAtIndexPath:Objectif C Fuites lors de la publication des objets avec UITableViewCell
File *file = [[File alloc] init];
file = [self.fileList objectAtIndex:row];
UIImage* theImage = file.fileIconImage;
cell.imageView.image = theImage;
cell.textLabel.text = file.fileName;
cell.detailTextLabel.text = file.fileModificationDate;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
j'ai couru l'outil de fuite et a trouvé que l'objet fichier est une fuite parce que je ne suis pas le relâcher. Donc, j'ai ajouté la libération avant de retourner la cellule où je pensais qu'il était sûr (comme indiqué ci-dessous):
File *file = [[File alloc] init];
file = [self.fileList objectAtIndex:row];
UIImage* theImage = file.fileIconImage;
cell.imageView.image = theImage;
cell.textLabel.text = file.fileName;
cell.detailTextLabel.text = file.fileModificationDate;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
[file release];
return cell;
Maintenant, quand je lance l'application, il se bloque. Les UITableViewCells référencent-ils toujours l'objet fichier? Quelle est l'approche à utiliser ici pour s'assurer que je ne fuit pas la mémoire?
Fair, n'a pas regardé ce petit, avait suggéré que le autorelease avec le alloc/init ... mais vous avez raison, il n'a pas besoin allouer/init l'objet fichier à tous! – h4xxr