Quelles valeurs dois-je utiliser pour les états booléens iOS?
Il semble que sous iOS, j'ai un certain nombre d'options qui semblent correspondre pour les valeurs booléennes:
YES
NO
TRUE
FALSE
true
false
Celles qui dois-je utiliser? Dans ce cas particulier, je me cache une étiquette, de sorte que dois-je mettre les hidden
propriété YES
TRUE
ou true
?
source d'informationauteur Andrew | 2013-01-03
Vous devez vous connecter pour publier un commentaire.
Réponse courte: vous devriez préférer
YES
etNO
pour le réglage des propriétés de fondation de typeBOOL
.Pour la réponse longue, nous allons tout d'abord voir où sont ces constantes définies:
true
etfalse
sont destdbool.h
; ils sont#define
-d comme1
et0
TRUE
etFALSE
sont deCFBase.h
; ils sont#define
-d comme1
et0
YES
etNO
sont deNSObjCRuntime.h
. C'est là quesigned char
esttypedef
-ed commeBOOL
et ses deux valeurs sont#define
-d comme((BOOL)1)
et((BOOL)0)
ou__objc_yes
/__objc_no
siobjc_bool
est pris en charge.Les classes de base de l'utiliser constamment
BOOL
qui est untypedef
poursigned char
à représenter ses propriétés booléennes. Depuis les deux premières paires sont convertis auint
constantes, leur utilisation peut entraîner des avertissements, mais il serait sans doute travailler correctement de toute façon. LeYES
etNO
constantes, cependant, sont définies dans le plus compatible pour votre compilateur, quelle que soit sa version. Par conséquent, je vous conseille d'utiliserYES
etNO
de façon constante tout au long de votre code.En fait il n'y a pas de différence entre
YES
TRUE
ettrue
toutes celles qui représentent un véritable etat représenté par 1.Et
NO
false
FALSE
représente un faux de l'état représenté par 0.Vous pouvez également utiliser:
qui est équivalent à
BOOL aBool = true;
etBOOL aBool = TRUE;
etBOOL aBool = YES;
Mais:
Sera sortie comme:
C'est parce que la comparaison directe avec OUI échoue lorsque la valeur d'une
BOOL
type est une valeur non nulle autre que 1.Voici une belle article pour vous.
Je pense que tous sont d'accord. Mais personnellement, je voudrais utiliser
YES
/NO
.J'ai trouvé une doc appelé Objective-C Référence D'Exécution:
Je partage votre point de vue sur ce, alors qu'ils sont actuellement définis toutes les mêmes, portage du code est une douleur lorsque vous pouvez trouver le VRAI != vrai. (Précisément pourquoi nous ne devrions jamais test X == 1 pour VRAI que certaines langues utilisent -1 et certaines d'utilisation 1)
Je pense qu'il pourrait être la préférence personnelle, et principalement sur l'avenir des ports.
Je suis le VRAI et le FAUX options de portage en C/C++ est plus facile.
Vous pouvez constater que le vrai et le faux est préférable si vous êtes régulièrement la conversion de code pour Java donc il y a moins de recherche/remplace mais j'ai trouvé la consistance avec du Cacao en plus facile.
Utiliser le OUI et le NON est la même d'utiliser le VRAI et le FAUX ou 1 et 0 respectivement.
Et l'utilisation NSLog pour afficher les résultats comme ce petit exemple: