2010-09-07 5 views
4

Je veux avoir du code conditionnel dans mon application iPhone en fonction de la configuration (Debug/Release/Distribution). Je ne pense pas que Xcode communique d'une manière ou d'une autre la configuration du projet à mon code, par exemple il n'y a pas de macro ou autre disponible, n'est-ce pas?Comment avoir du code conditionnel en fonction de la configuration active?

La meilleure solution que je suis venu avec jusqu'à présent: dans les paramètres du projet, pour chaque configuration, définir un drapeau dans « Autres drapeaux C » comme -DDEBUG, -DDISTRIBUTION etc.

Ensuite, dans mon code , ont du code conditionnel avec des macros préprocesseur, comme

#ifdef DEBUG 
// debug-configuration-specific code here 
#endif 
#ifdef DISTRIBUTION 
// distribution-configuration-specific code here 
#endif 

y at-il une autre façon/mieux/plus élégante de faire la même chose?

En ce qui concerne les raisons pour lesquelles cela est nécessaire: Je configure une configuration lors de l'exécution en fonction de la configuration. Par exemple, je travaille sur une API HTTP et j'ai une URL d'extrémité différente pour les cibles de débogage et de publication, que je configure de cette façon.

+0

Quel est le problème avec cette solution? – VdesmedT

+0

J'espérais qu'il existe un moyen d'accéder à la configuration avec les macros du préprocesseur sans que je doive spécifier les drapeaux à la main. – Jaanus

Répondre

0

Non! C'est la façon officielle recommandée et je n'en connais aucune autre.

0

Je les ajouterais à la section définie par l'utilisateur des paramètres de construction pour cette cible. Vous pouvez le faire en allant dans Éditeur -> Ajouter un paramètre de construction -> Ajouter un paramètre défini par l'utilisateur lorsque la cible est sélectionnée.

Donc, fondamentalement, ce que vous avez dit, mais d'une manière un peu différente. Erm J'ai revérifié mon projet et ils sont en fait configurés dans Apple LLVM 5.0 Preprocessing et non définis par l'utilisateur. Par exemple. DEBUG = 1

Questions connexes