Compilation d'une méthode sans nom...
denis_13
Membre
Bonsoir,
Tout à l'heure j'ai eu un plantage a l'exécution d'un code, lié à l'altération du titre d'une méthode dans le fichier d'implémentation.
Normalement j'avais
- (void)deleteVendorList:(DGCDVendorList *)aVendorList
{ ...
et pour une raison quelconque (au départ j'ai soupçonner un problème avec Git, mais il faut que j'arrête d'être parano, j'imagine plutôt que j'ai du poser quelque chose sur mon clavier quand elle était sélectionnée?) j'ai eu ceci à la place...
- (void)
:(DGCDVendorList *)aVendorList
ce qui est curieux c'est qu'il n'y a aucun warning lors de la compilation (même après un clean), du coup avant de le repérer dans le code j'ai cherché l'implémentation de cette méthode dans le projet sans la trouver, j'ai trouvé cela un peu étrange.
Ca vaut peut-être pas le coup d'en parler, mais au cas où cela pourrait économiser quelques cheveux...
Tout à l'heure j'ai eu un plantage a l'exécution d'un code, lié à l'altération du titre d'une méthode dans le fichier d'implémentation.
Normalement j'avais
- (void)deleteVendorList:(DGCDVendorList *)aVendorList
{ ...
et pour une raison quelconque (au départ j'ai soupçonner un problème avec Git, mais il faut que j'arrête d'être parano, j'imagine plutôt que j'ai du poser quelque chose sur mon clavier quand elle était sélectionnée?) j'ai eu ceci à la place...
- (void)
:(DGCDVendorList *)aVendorList
ce qui est curieux c'est qu'il n'y a aucun warning lors de la compilation (même après un clean), du coup avant de le repérer dans le code j'ai cherché l'implémentation de cette méthode dans le projet sans la trouver, j'ai trouvé cela un peu étrange.
Ca vaut peut-être pas le coup d'en parler, mais au cas où cela pourrait économiser quelques cheveux...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
certainement que le compilateur n'interdit pas le caractère de retour à la ligne dans le nom d'une méthode, d'où le manque de warning.
quant à l'obtention de ce genre de chose, oui, poser quelque chose sur la touche entrée, un ctrl+F puis entrée / entrée / entrée /etc. qui se passe mal, une suite d'entrée que l'on pense inactif alors qu'en fait le curseur n'est pas où on le croit, etc. En tout cas je ne vois pas pourquoi ce serait la faute de Git, le bug est très souvent entre la chaise et le clavier. Ceci n'est pas que valable pour les utilisateurs de logiciels, également pour les concepteurs /wink.png' class='bbc_emoticon' alt=';)' />
En effet, pour rappel :
Donc bien sûr en pratique on n'écrit jamais des méthodes dont les ":" ne sont pas précédés d'une portion de texte aidant à comprendre le but du paramètre à suivre... mais en réalité rien ne t'interdit d'écrire une méthode "-(void)toto:(id)arg1 :(id)arg2 :(id)arg3 :(id)arg4"... même si tu risques de te faire lyncher par ceux qui vont relire ton code car c'est vraiment une mauvaise idée pour la compréhension, techniquement le langage l'autorise.
C'est pour ça qu'au final dans ton cas le compilateur n'a pas gueulé, puisque finalement pour lui tu as créé une méthode qui a simplement pour nom ":" tout court... et que c'est un nom de méthode valide !
PS : La seule classe que je connais dans toute l'API Apple qui a des paramètres non nommés (sans préfixe avant les ":") c'est la classe CAMediaTimingFunction (et ses méthodes comme "+ (id)functionWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y" par exemple), je n'en ai jamais vu nulle part ailleurs (et tant mieux !)
PS: Je me suis fait un resto avec des amis ce midi et ils m'ont recommandés une super applie... FoodReporter :-)