12
votes

Constantes de classe

J'ai plusieurs classes OBJ-C, chacune ayant besoin d'un certain nombre de constantes utilisées dans des relevés de commutation.

J'avais essayé de définir ces constantes numériques dans le fichier .m à l'aide de l'instruction #define 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 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?


0 commentaires

4 Réponses :


5
votes

Le #define Les constantes n'existent que dans le fichier .m .

Si les constantes sont des entiers, vous pouvez également les définir dans un Enum : xxx


0 commentaires

34
votes

Avez votre propre fichier constant comme MyConstants.

dans myConstants.h déclarer toutes vos constantes: xxx

et dans mysacstants.m Définissez-les < Pré> xxx

en gardant des constantes dans un fichier séparé, il sera facile pour vous de les traquer et de modifier leur valeur.

C'est le meilleur moyen de définir purement des constantes. Et cela évitera également les touches en double.

Seulement que vous devez faire est d'importer cette classe dans vous d'autres classes: xxx

et utilisez ces clés tout de suite : xxx


3 commentaires

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 dans classa.h et quelqueerrorcode = 2 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.



1
votes

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?

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.

Tout défini dans un fichier .m est local au moment de l'exécution.

Regardez également cette question: constantes dans l'objectif-C


0 commentaires

8
votes

Je trouve généralement que les énumérums sont mieux utilisés pour les commutateurs: xxx

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%.

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.


0 commentaires