2011-05-11 2 views
1

J'ai de nombreuses constantes dans mon application utilisées par plusieurs classes de mon projet. Ces constantes doivent être définies au moment de la compilation (elles ne seront pas modifiées plus tard). Pour l'instant, j'utilise des instructions #define en haut de chaque classe qui nécessite la constante. Le problème est que je dois répéter ces affirmations dans chaque classe qui nécessite la constante.Constantes d'application utilisées au moment de la compilation

Je prévois de définir toutes ces constantes dans ma main.m ou dans une autre .h importée par main.m mais je pense que ce n'est pas une bonne idée.

-> Existe-t-il un mécanisme XCODE/IOS ou un fichier créé à cette fin?

-> Si ce n'est pas le cas, est-ce une bonne idée de définir les constantes dans mon principal. ?

Merci pour vous aider à

kheraud

+0

Quel type de constantes? Intégral, cordes, ...? –

Répondre

3

Vous pouvez écrire toutes les constantes dans n'importe quel fichier .h, puis vous pouvez importer ce fichier dans votre fichier projectname_Prefix.pch. Ensuite, vous n'avez pas besoin d'importer le fichier dans un autre fichier source. c'est directement importé.

1

vous pouvez les enregistrer dans votre *_Prefix.pch alors ils s'appliqueront pour toutes les classes sans importer une autre classe.

0

Généralement, la meilleure façon de gérer les constantes partagées est de les déclarer extern dans un ou plusieurs fichiers .h dédiés, puis de les définir dans les fichiers d'implémentation correspondants. De cette façon, vous aurez la garantie d'avoir seulement une copie de chaque constante dans votre binaire, contrairement à un #define.

0

Vous pouvez fournir des définitions de compilateur à l'échelle de la cible dans Xcode en les ajoutant au paramètre de construction Macros du préprocesseur. Par exemple, cela peut vous permettre de créer une version Lite gratuite de votre application en créant une cible dans votre projet, puis en ajoutant une définition LITE dans les macros du préprocesseur.

Voir this question pour plus à ce sujet.

Questions connexes