Dans mon projet, j'ai un avertissement de dépréciation, initWithFrame: reuseIdentifier: est obsolète
Je ne sais pas ce que cela signifie, quelqu'un pourrait-il me dire comment résoudre cet avertissement merci
voici le code court
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
NSString *cellValue = [itemsList objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
return cell;
}
et l'avertissement est sur cette ligne:
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
Jetez un œil à la page d'Apple
Ici, les fonctions et propriétés surlignées en rouge seront supprimées à l'avenir par Apple dans le SDK à venir.
afin que nous les évitions lors de la création de l'application.
Parce que nous avons besoin d'un projet à long terme qui devrait fonctionner sans crash.
une méthode obsolète signifie qu'elle a été remplacée/retirée mais qu'elle est toujours valide dans la version actuelle de la langue. il doit être évité et peut provoquer des problèmes/erreurs. consultez la documentation qui doit répertorier une méthode alternative que vous pouvez utiliser.
Ici, vous devez utiliser la méthode
- initWithStyle:reuseIdentifier:
Ensuite, votre boucle if ressemblerait à ceci
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
Ce problème apparaît dans Beginning IOS 5 Développement par Mark, Nutting et La Marche. Certains lecteurs peuvent venir ici de ce livre où le code obsolète apparaît à la page 265. Ils peuvent supposer que la faute est la leur!
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier: sectionsTableIdentifier] autorelease];
doit être remplacé par (comme le soulignent les contributeurs ci-dessus)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: sectionsTableIdentifier];
Notez que j'ai également supprimé la libération automatique parce que le comptage de référence automatique ne l'aime pas!
J'espère que cela t'aides.
Utilisez ce code:
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
Cela devrait résoudre votre problème:
static NSString *SimpleTableIdentifier;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
reuseIdentifier:SimpleTableIdentifier] autorelease];
}