2010-08-29 4 views
1

Je suis surpris que les appels suivants entraînent avertissement de type cast:Paramètre Méthode NSUInteger et appel à l'aide IndexPath.row Avertit utiliser un type jeté

J'ai une classe MyClass avec la méthode suivante:

- (id) initWithData:(NSUInteger)mNumber; 

quand je l'appelle cette méthode en utilisant

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    MyClass *lClass = [[MyClass alloc] initWithData:indexPath.row]; 
    ... 

Je reçois un avertissement « en passant l'argument 1 de « initWithData » un entier en pointeur sans transtypage ».

Quand je Typecast 'initWithData' comme ceci:

MyClass *lClass = [[MyClass alloc] initWithData:(NSUInteger)indexPath.row]; 

l'avertissement reste inchangé indiquant que je ne l'ai pas abordé la cause du message. Quelqu'un sait où et pourquoi je sors de la piste?

Répondre

2

Essayez de renommer -initWithData: à d'autres noms comme -initWithRowNumber:. Le compilateur peut le confondre avec -[NSData initWithData:] qui prend un NSData * comme entrée, pas NSUInteger.

+0

Je suis d'accord. En particulier, la valeur de retour de * alloc * est de type * id *. Donc, ce n'est pas vraiment sécurisé. – Codo

+0

Je l'ai renommé initWithContent et l'avertissement a disparu ... Merci – iFloh

1

Renamem initWithData à autre chose.

Questions connexes