27 votes

initWithFrame : reuseIdentifier : est déprécié

Dans mon projet j'ai un avertissement de dépréciation, initWithFrame : reuseIdentifier : est déprécié.

Je ne sais pas ce que cela signifie, quelqu'un peut-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];

56voto

Jetez un coup d'œil à la page de cette pomme

Les fonctions et propriétés surlignées en rouge seront supprimées à l'avenir par Apple dans le prochain SDK.

de sorte que nous devrions les éviter lors de la création de l'application.

Parce que nous avons besoin d'un projet à long terme qui doit fonctionner sans problème.

une méthode dépréciée signifie qu'elle a été remplacée/supprimée mais qu'elle est toujours valide dans la version actuelle du langage. elle doit être évitée et peut causer des problèmes/erreurs. vérifiez la documentation qui devrait indiquer une méthode alternative que vous pouvez utiliser.

Ici, vous devez utiliser la méthode

 - initWithStyle:reuseIdentifier: 

Alors votre boucle if ressemblerait à ceci

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
              reuseIdentifier:CellIdentifier] autorelease];
}

6voto

Tim Points 433

Ce problème apparaît dans Beginning IOS 5 Development de Mark, Nutting et La Marche. Certains lecteurs peuvent venir ici depuis ce livre où le code déprécié 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 laissé tomber l'autorelease aussi parce que le comptage automatique des références ne l'aime pas !

J'espère que cela vous aidera.

1voto

Yash Kaushik Points 51

Utilisez ce code :

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                 reuseIdentifier:CellIdentifier] autorelease];

0voto

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];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X