PCh file Xcode 6

samirsamir Membre

Hello,


 


Comme vous savez tous si vous avez créer un projet un nouveau projet récemment soue Xcode 6, le fichier .pch n'est pas inclus. 


 


Bon on le choix de le rajouter un et de continuer de travailler comme avant, mais sur internet y a des gens qui disent que Apple a fait ça volontairement pour éviter les dépendances cachées des fichiers sources.


 


Moi je trouve ça un peu déroutant, par exemple je suis obligé d'importer UIKit dans presque toutes les classes. 


 


Question simple :


 


Comment vous faites ? 


 


 


Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur
    Rajouter le fichier .pch ? ;)
  • CéroceCéroce Membre, Modérateur
    Faire les @import ? :-)
  • samirsamir Membre
    mars 2015 modifié #4


    Faire les @import ? :-)




     


    les @import ou #import sont pareils, ces derniers sont transformés par le compilateur ( ou l'analyseur?) en @import


     


    D'ailleurs les templates Xcode Apples utilisent toujours le #import.


  • AliGatorAliGator Membre, Modérateur
    J'ai tendance à  de + en + préférer les @import explicites plutôt que de tout mettre dans un PCH.

    Les PCH avaient l'avantage avant, puisqu'ils sont précompilés, de permettre d'accélérer la compilation car tous les headers que tu mettais dedans étaient pré-compilées une fois au lieu d'être compilés à  chaque fois qu'ils sont inclus. Mais cet avantage n'est plus intéressant maintenant qu'on a les Modules et les @import qui font automatiquement la même chose et de façon + fine et + flexible (chaque module étant pré-compilé de son côté indépendamment des autres)

    Par contre les PCH ont un inconvénient, qui est toujours présent si tu continues de les utiliser au lieu de les abandonner au profit des modules, c'est que tu as tendance alors à  mettre un peu tous tes headers dans ce PCH, ce qui fait qu'à  chaque fichier source compilé, il se sert de la totalité des définitions du PCH, y compris celles qui te servent à  rien dans ton contexte. Et du coup tu ne vois pas si tu as utilisé une définition qui n'a pas lieu d'être, ou fait des choses impropres comme utiliser des définitions de la partie UI dans la partie métier, etc. Par exemple mettre UIKit dans le PCH fait qu'il est importé partout, même là  où il n'a aucune raison d'être importé...


    Du coup moi je trouve ça bien mieux de me passer de + en + du PCH et de faire de + en + les @import explicitement dans chaque fichier, et du coup uniquement les @import dont j'ai besoin et non pas tout et n'importe quoi.
    Il m'arrive quand même de rajouter un PCH, mais quand je le fais, je fais alors + attention qu'avant à  ne pas tout mettre dedans, de ne pas m'en servir comme "j'ai la flemme d'importer ça dans 70% de mes classes donc je le met dans le PCH, et puis en fait je finis par mettre un peu tout dans mon PCH au final..." mais à  mettre vraiment le strict minimum qui a vraiment du sens à  être importé dans 99% des cas. Et c'est là  qu'on réalise que ça reste finalement assez rare d'avoir un header qui a vraiment une justification à  être importé vraiment partout partout.
Connectez-vous ou Inscrivez-vous pour répondre.