Je programme ma première application iPhone (qui se bloque avec une erreur EXC BAD ACCESS).Aide pour les débutants: quand appeler [release obj]?
J'ai lu quelques autres réponses similaires, mais je n'ai toujours pas une image claire de la façon de réparer mon code.
Quelqu'un peut-il aider à résoudre ma gestion de la mémoire pour l'objet cellulaire UITableViewCell * dans cet extrait:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:kCityCellReuseID];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCityCellReuseID];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
cell.textLabel.text = [[self.myData objectAtIndex:indexPath.section] valueForKey:kDisplayText];
[cell release];
}
return cell;
}
La libération ne supprime jamais rien immédiatement. Il décrémente simplement son nombre de retenue. –
@NSD: Et si l'objet a un nombre de retenue de 1, l'objet sera immédiatement désalloué. – Chuck
Non ce ne sera pas. Il peut être désalloué lors du prochain voyage dans la boucle d'exécution, mais jamais immédiatement. Tout cela a été documenté de manière très approfondie pendant des décennies maintenant. –