J'ai plusieurs classes OBJ-C, chacune ayant besoin d'un certain nombre de constantes utilisées dans des relevés de commutation. P>
J'avais essayé de définir ces constantes numériques dans le fichier .m à l'aide de l'instruction code> #define code> préprocesseur. Toutes ces constantes commencent par "kcell". Cela semble bien fonctionner, mais le code du code de Xcode me présente avec chaque constante préfixée de «KCell», peu importe où je suis dans le projet. Faire #define code> constantes ont une portée globale? Si tel est le cas, quelle est la meilleure façon de définir des constantes de classe purement locales qui ne seront pas classées avec des constantes de manière similaire dans d'autres classes? P>
4 Réponses :
Le Si les constantes sont des entiers, vous pouvez également les définir dans un #define code> Les constantes n'existent que dans le fichier
.m code>.
Enum code>: p>
Avez votre propre fichier constant comme MyConstants.
dans myConstants.h déclarer toutes vos constantes: p> et dans mysacstants.m Définissez-les P> < Pré> xxx pré> en gardant des constantes dans un fichier séparé, il sera facile pour vous de les traquer et de modifier leur valeur. P> C'est le meilleur moyen de définir purement des constantes. Et cela évitera également les touches en double. P> Seulement que vous devez faire est d'importer cette classe dans vous d'autres classes: p> et utilisez ces clés tout de suite : p>
Orthographe cohérent, j'aime ça (myConcstatnts).
Vous pouvez également mettre le fichier #import "mysacstants.h" dans votre fichier préfix.pch afin qu'il soit accessible à partir de tous les fichiers .m de votre projet.
Mais ce ne sont pas des constantes de classe. Et si j'ai deux fichiers classa.h et classb.h et j'ai une constante quelqueerrorcode = 1 code> dans classa.h et
quelqueerrorcode = 2 code> dans classb.h? Comment puis-je vous assurer que dans le code d'appel, je peux vérifier Classa.SomeErrorCode et Classb.SomeErrorCode et obtenez toujours deux valeurs différentes, comme elles sont définies dans les deux fichiers.
Cela semble bien fonctionner, mais le code du code de Xcode me présente avec toutes les constantes préfixées de «KCell», peu importe où je suis dans le projet. Les constantes de #define ont-elles une portée globale? Si tel est le cas, quelle est la meilleure façon de définir des constantes de classe purement locales qui ne seront pas classiques avec des constantes nommées de manière similaire dans d'autres classes? Em> p>
La disponibilité du détection de code Xcode et de l'exécution n'est pas identique. XCode propose également des noms selectornorns et d'autres articles qui ne sont pas visibles au moment de l'exécution. P>
Tout défini dans un fichier .m est local au moment de l'exécution. P>
Regardez également cette question:
constantes dans l'objectif-C p>
Je trouve généralement que les énumérums sont mieux utilisés pour les commutateurs: Malheureusement, Xcode ne limitent pas son code de code (achèvement du code, complet) dans un fichier spécifique. Il essaie de comprendre quelles constantes sont accessibles à partir de quelles zones de votre code mais que j'ai remarquées, il n'est pas précis à 100%. P> Je suggérerais de ne pas les commencer tous avec le même préfixe. Par exemple, si vous avez deux types de cellules de table, KCustomCell et KotherCell peuvent être de meilleurs moyens de nommer vos constantes. P> p>