28 votes

La suppression de l'erreur "plusieurs méthodes nommées 'xxx:' trouvées"

Dans mon projet actuel dans le fichier ViewController.m, je suis en cours d'exécution de la méthode:

[[connection writer] writeData: data];

Il renvoie à l'avertissement:

warning: multiple methods named 'writeData:' found

J'essaie d'appeler la méthode:

- (void) writeData: (NSData*)data

...dans TCPWriter.m. Malheureusement, il y a deux autres writeData méthodes

- (void)writeData:(NSData *)data;

...dans NSFileHandle.h et...

- (BOOL)writeData:(NSData *)data

...dans NSURLHandle.h. Cela est particulièrement confus pour moi, car [conn writer] doit retourner l' TCPWriter de la classe et que la classe doit appeler le corriger writeData méthode. En outre, je ne suis même pas sûr que NSFileHandle.h et NSURLHandle.h sont même inclus dans l'une des bibliothèques incluses dans le ViewController.h, plutôt que dans une autre partie du projet.

Comment puis-je montrer le compilateur qui writeData méthode, je tiens à appeler et pourquoi cette erreur se produit?

48voto

Peter N Lewis Points 12025

Assurez-vous que [écrivain de connexion] retourne réellement un TCPWriter *. S'il renvoie un identifiant, le compilateur ne saura pas quelles données d'écriture utiliser. Assurez-vous également que vous importez le fichier TCPWriter.h - si le compilateur ne voit pas les fichiers d'en-tête, il reviendra par défaut à id, ce qui vous ramènera au même problème.

Essayer

 TCPWriter* writer = [connection writer];
[writer writeData: data];
 

ou

 [(TCPWriter*)[connection writer] writeData: data];
 

3voto

McUsr Points 120

Comme alternative à la splendide réponse ci-dessus, vous pouvez également lancer l'objet sur le bon type pour vous débarrasser de l'avertissement, comme ceci:

 [(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling
 

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