Des constantes NSString accessibles dans tout le projet

Bonsoir,


 


Pour éviter les erreurs fracassantes, ou, plus ennuyeuses encore, celles qui ne font aucun bruit, dans le genre mal orthographier une clé, j'aimerais connaà®tre la meilleure façon de faire:


 


1. #define kConstantKey @wannaBeConstant


2. une constante, et là  j'aimerais savoir comment me débrouiller avec static, const, NSString*, extern, etc. parce que les avis sont divers et peu clairs sur le web.


 


Ensuite, où placer cette constante?


1. Dans un fichier Constants.h et faire des #include partout?


2. Dans un fichier Constants.h et faire un #include dans le fichier .pch?


3. Directement dans le fichier .pch?


 


Il s'agit de noms de clés dans les NSUserDefaults, j'en fais un usage dans beaucoup de fichiers et je souhaiterais ne définir chaque clé qu'une seule fois pour tout le projet.


 


Merci!


Réponses

  • AliGatorAliGator Membre, Modérateur
    On a pas déjà  parlé du sujet genre plein de fois sur les forums ?!


    La réponse est évidemment "extern TYPE const NOM;" dans un .h et "TYPE const NOM = VALEUR;" dans le .m quant à  ou mettre ça ça dépend du contexte logique sémantique de ta constante. Bref une recherche sur les forums devrait déjà  répondre à  toutes ces questions.
  • Plein de fois, en effet... donc embarras du choix. Finalement j'ai opté pour un fichier Constants.h contenant des déclarations comme:


     


    static NSString* const kUniqueIDKey = @uniqueID;

     

    et je fais un #include "Constants.h" dans mon fichier .pch.

     

    C'est bien parce qu'il s'agit des userDefaults... une classe avec des vrais accesseurs est bien plus efficace, propre et lisible.

  • AliGatorAliGator Membre, Modérateur
    janvier 2014 modifié #4
    Ce qui duplique tes symboles à  chaque include donc et une mauvaise solution.
  • berfisberfis Membre
    janvier 2014 modifié #5

    Je ne fais un "include" que dans mon fichier .pch (ça m'oblige à  faire un build).


     


    Et ça a dupliqué jusqu'au moment où j'ai ajouté static. Peux-tu m'expliquer?


  • AliGatorAliGator Membre, Modérateur
    Le pch est auto inclus avant chaque .h donc c'est bien ce que je dis ça duplique.


    Quant à  static je l'ai déjà  expliqué dans les autres posts et pas envie de réécrire les mêmes romans à  nouveau surtout depuis mon iPhone ;)
  • CéroceCéroce Membre, Modérateur
    janvier 2014 modifié #7

    Il faut éviter d'inclure du code amené à  évoluer dans le .pch.


    Dans ton exemple, chaque fois que tu ajouteras une constante ou changeras son nom, TOUS les fichiers sources seront recompilés.


    D'autant plus qu'il est peu probable qu'une constante concerne tout le projet, à  la fois les couches Modèle, Contrôleur et Vue.


  • Mis à  part le choix pch ou non pch, berfis déclare et instance sa constante dans le .h, alors que Ali conseillait de la déclarer dans le .h et de l'instancier dans un .m.


     


    Quelle différence cela fait-il ?


  • CéroceCéroce Membre, Modérateur


    Mis à  part le choix pch ou non pch, berfis déclare et instance sa constante dans le .h, alors que Ali conseillait de la déclarer dans le .h et de l'instancier dans un .m.


     


    Quelle différence cela fait-il ?



     




    Ce qui duplique tes symboles à  chaque include donc et une mauvaise solution.




     


    Voilà .


    (Il faut suivre ce que dit Sobek Aligator, cela va sans dire).


Connectez-vous ou Inscrivez-vous pour répondre.