XCode 4.6 m'a trouvé un bug...

Je viens de mettre à  jour XCode, je compile et voilà  qu'il me sort un warning de type "Semantic Issue". Et en effet, une ligne de code dans un if qui réalise un assignement (=) au lieux d'un ==.

Sympa.

Réponses

  • l'assignement est entre parenthèse ?
  • 'Alak' a écrit:


    l'assignement est entre parenthèse ?


    non, un if (foo = bar)
  • AliGatorAliGator Membre, Modérateur
    Bah oui y'en a plein des comme ça

    C'est pour ça que j'aime activer un maximum de warnings ils sont toujours plus utiles les uns que les autres ;-)



    C'est cool que les diverses mises à  jour de Xcode activent de plus de plus de ces warnings par défaut.
  • 'AliGator' a écrit:


    Bah oui y'en a plein des comme ça

    C'est pour ça que j'aime activer un maximum de warnings ils sont toujours plus utiles les uns que les autres ;-)



    C'est cool que les diverses mises à  jour de Xcode activent de plus de plus de ces warnings par défaut.




    Ouais j'avoue que j'ai pas étudié à  fond mes niveaux de warning. Bonne chose donc.
  • J'ai déjà  eu ce warning une fois, et je ne suis pas sous XCode 4.6.
  • AliGatorAliGator Membre, Modérateur
    janvier 2013 modifié #7
    Y'a pas besoin de Xcode 4.6 pour avoir le warning.



    C'est juste que Xcode 4.6 doit sans doute l'activer maintenant par défaut (je sais pas, moi j'ai pris l'habitude d'activer la plupart des warnings sur mes projets pour m'assurer de faire du code de qualité et qu'il me prévienne de quasiment tout)
  • 'AliGator' a écrit:


    Y'a pas besoin de Xcode 4.6 pour avoir le warning.



    C'est juste que Xcode 4.6 doit sans doute l'activer maintenant par défaut (je sais pas, moi j'ai pris l'habitude d'activer la plupart des warnings sur mes projets pour m'assurer de faire du code de qualité et qu'il me prévienne de quasiment tout)




    Ouip, y a mise à  jour des warnings. Apparement c'est le seul truc où je suis passé à  côté. Bonne idée d'avoir appliquer ça par défaut pour cette mise à  jour.
  • Oups une Mà J image/huh.gif' class='bbc_emoticon' alt='???' />

    Déjà  qu'il y avait quelque Warning irrésolu dans mon code ....



    Y'a de la doc sur le Warning ? Je sens que je vais en avoir besoin image/crazy.gif' class='bbc_emoticon' alt=' B) ' />
  • AliGatorAliGator Membre, Modérateur
    Bah comme pour tout warning, tu le sélectionnes dans les Build Settings, et dans le Quick Help Inspector à  droite tu as toutes les explications.
  • 'AliGator' a écrit:


    Bah oui y'en a plein des comme ça

    C'est pour ça que j'aime activer un maximum de warnings ils sont toujours plus utiles les uns que les autres ;-)



    C'est cool que les diverses mises à  jour de Xcode activent de plus de plus de ces warnings par défaut.




    Entièrement d'accord avec ça.



    Il y a plein de warnings très intéressant à  activer afin d'améliorer la qualité de son code et d'être alerté le plus tôt possible d'éventuels bugs.
  • Bon, je viens de faire la mise à  jour aussi et boum ! Plein de warnings!..

    Après suppression des "vrais" erreurs (défauts d'initialisatiin, et erreur du genre == au lieu de isEqualToString image/whip.gif' class='bbc_emoticon' alt=' >:) ' />/>), il me reste 68 warnings identiques... : "XXX used as the name of the previous parameter rather than as part of the selector" sur toutes les méthodes.



    J'ai trouvé plusieurs sujets sur ce problème sur StackOverflow, mais je ne comprends pas la solution... Ils ajoutent un espace entre les deux parametres ; chez moi cette solution ne change rien.

    Avez vous une autre solution ?

    Merci d'avance...
  • Tu nous copie/colle une des méthodes en question ? Peut-être un problème dans sa forme ?
  • Au temps pour moi, je ne mettais pas l'espace au bon endroit !!! Problème résolu merci.
  • AliGatorAliGator Membre, Modérateur
    Oui ce warning est top aussi (par contre si tu en avais 46, c'est que tu avais vraiment des pb dans ton code ^^)

    J'avais expliqué le problème dans ce post.



    En gros si tu déclares un truc comme "-(void)setToto:(id) forTata:(id)tata" en oubliant de donner un nom au paramètre passé derrière "setToto:", alors en fait tu auras écrit une méthode nommée "setToto::" et non "setToto:forTata:" ! Et le "forTata" sera compris comme la variable dans laquelle sera stockée le premier paramètre (au lieu de faire partie du nom du selecteur), au même titre que le "tata" est la variable contenant le 2e paramètre... Bref pas du tout ce que tu veux.



    Donc c'est cool si maintenant y'a ce warning, ça évite ce genre de boulette image/smile.png' class='bbc_emoticon' alt=':)' />
  • Bah en fait, j'avais pas mal de méthodes avec plusieurs arguments, mais je n'ai pas nommé les arguments ; est-ce une mauvaise pratique ?
  • AliGatorAliGator Membre, Modérateur
    'Alf1996' a écrit:


    Bah en fait, j'avais pas mal de méthodes avec plusieurs arguments, mais je n'ai pas nommé les arguments ; est-ce une mauvaise pratique ?
    Heu sérieux ?



    Tu veux dire que tu déclarais tes méthodes du genre :
    -(void)eatCat:(NSString*)cat :(NSString*)sauce :(BOOL)killFirst
    ? Ce qui veut dire que ta méthode avait pour nom officiel "eatCat:::" ?



    Si c'est ça oui c'est une très mauvaise pratique, question lisibilité c'est à  éviter !
  • *va se cacher, rouge de honte...*



    Je vais corriger ça de ce pas !!!
  • 'AliGator' a écrit:


    Tu veux dire que tu déclarais tes méthodes du genre :
    -(void)eatCat:(NSString*)cat :(NSString*)sauce :(BOOL)killFirst
    ? Ce qui veut dire que ta méthode avait pour nom officiel "eatCat:::" ?


    Ah, j'avais pas fait gaffe au nom de méthode de ton exemple !

    C'était exactement çà . Et pour l'appel je faisais :
    <br />
    [self eatCat:@&quot;LeChatNoir&quot;:@&quot;A l&#39;ail&quot;:NO];	  //NO : il faut donner sa chance au chat &#33;<br />





    Si c'est ça oui c'est une très mauvaise pratique, question lisibilité c'est à  éviter !




    çà  y est c'est corrigé, maintenant, j'ai :


    <br />
    [self eatCat:@&quot;ChatonSauvage&quot; withSauce:@&quot;au beurre blanc&quot; killFirst:NO];	  //NO : pas de jaloux &#33;&#33;<br />




    Et plus de warning. image/cheer.gif' class='bbc_emoticon' alt=' <3 ' />



    PS : c'est quoi le gage ? *retourne se cacher, toujours rouge de honte...*



    Merci encore ! image/thumbsup.gif' class='bbc_emoticon' alt='' />
  • 'Alf1996' a écrit:


    PS : c'est quoi le gage ? *retourne se cacher, toujours rouge de honte...*


    Participer à  une manifestation de végétariens, en tenant une pancarte avec des images de chatons !
  • Alf1996Alf1996 Membre
    février 2013 modifié #21
    NOOONNN, Pas çà  !



    Edit : en fait, j'ai déjà  passé plus de 4 heures à  corriger tout mon code, çà  suffit non ?
  • * petit rire sadique *
  • AliGatorAliGator Membre, Modérateur
    février 2013 modifié #23
    Tu avoueras que c'est quand même plus lisible à  l'appel maintenant que le nom de la méthode contient un préfixe devant chaque paramètre, je comprend bien mieux ce que tu comptes faire avec ChatonSauvage qu'avec LeChatNoir image/tongue.png' class='bbc_emoticon' alt=':P' />



    La seule question à  laquelle cela ne répond pas, c'est de savoir si tu garde les poils ou pas lors de la dégustation... bien qu'avec "...killFirst:NO" j'imagine que oui image/wink.png' class='bbc_emoticon' alt=';)' />
  • 'AliGator' a écrit:


    Tu avoueras que c'est quand même plus lisible à  l'appel maintenant que le nom de la méthode contient un préfixe devant chaque paramètre, je comprend bien mieux ce que tu comptes faire avec ChatonSauvage qu'avec LeChatNoir image/tongue.png' class='bbc_emoticon' alt=':P' />


    Entièrement d'accord.

    En fait, quand j'ai créé la première méthode "multi-arguments", je m'étais dit "çà  serait bien de pouvoir les nommer comme dans les 'méthode Apple'", et puis j'ai pensé que ce n'était probablement pas possible, et je n'ai pas cherché plus loin... Alors, à  la place, je mettais des noms d'arguments "explicites"... Mais, c'est nettement mieux ainsi.



    Quoique, dans certains cas (voir exemple plus haut), il eut peut-être mieux valu que certaines personnes ne comprennent pas l'utilité de certains arguments... Les représailles risquent d'être terribles ! image/ph34r.png' class='bbc_emoticon' alt='' />




    La seule question à  laquelle cela ne répond pas, c'est de savoir si tu garde les poils ou pas lors de la dégustation... bien qu'avec "...killFirst:NO" j'imagine que oui image/wink.png' class='bbc_emoticon' alt=';)' />




    Secret de cuisinière... image/grin.gif' class='bbc_emoticon' alt=';D' /> Je vais ajouter un argument, mais je ne donnerai pas d'exemple d'utilisation...
  • AliGatorAliGator Membre, Modérateur
    'Alf1996' a écrit:


    Quoique, dans certains cas (voir exemple plus haut), il eut peut-être mieux valu que certaines personnes ne comprennent pas l'utilité de certains arguments... Les représailles risquent d'être terribles ! image/ph34r.png' class='bbc_emoticon' alt='' />
    Moi je n'ai fait que choisir l'exemple de la méthode, c'est toi qui a choisi l'exemple des arguments passés image/tongue.png' class='bbc_emoticon' alt=':P' />
  • * feulements indignés * image/angry.gif' class='bbc_emoticon' alt='>:(' /> image/angry.png' class='bbc_emoticon' alt=' :s ' />

    je ne me ferais jamais attraper
Connectez-vous ou Inscrivez-vous pour répondre.