Warnings BOOL Xcode 6.3.1
Hello,
J'ai mis à jour mon Xcode ce matin .
J'ai remarqué que le compilateur ne me signale plus un warnings pour ce genre de code :
NSDictionary *dic = @{@key : @false};
BOOL value = dic[@key];
Le problème que j'ai pas de warnings pour cette ligne alors que il me semble que y avait un warnings pour les ancienne versions de Xcode.
Est-ce un bug Xcode/Compilateur ou j'ai raté un truc ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Merci.
Oui c'est bien un bug parce que c'est que sur des BOOL.
Warning signalé
Pour le Warning je ne sais pas.
Mais ça me paraà®t dangereux ce code : value prend la valeur YES dans ce cas, puisque le dictionnaire contient une entrée @key, bien que la valeur de cette entrée soit @false.
Et à la réflexion je ne pense pas que ce soit un bug ; on utilise abondamment la conversion référence d'objet vers BOOL dans les if par exemple.
Pour ma part, j'ai constaté que le nouveau Xcode était bien plus agressif sur les warnings/erreurs, du moins pour Swift.
Avant, l'addition d'un UInt32 et d'un Int ne lui posais aucun problème de conscience. Maintenant c'est considéré comme une erreur et ça empêche carrément la compilation.
Il faut procéder à une petite modification pour le rendre heureux.
Pour moi ce n'est pas totalement illogique :
nil = NO
pas nil = YES
Effectivement, on écrit souvent:
Plutôt que
Mais dans le cas d'une affectation, il serait prudent que la conversion doive être explicite:
Pardonnes-moi, mais tu mets un NSString comme valeur pour le clé et tu récupères la valeur pour déterminer si il y a n'importe quelle valeur ? Même si tu mettais la valeur comme @NO, ça renvoie toujours YES.
Je manque qqch ?
C'est un bug iOS 8 puisque j'ai bien le warning sur iOS 7, j'ai soumis un bug report.