Belle réponse que vous pouvez trouver dans le livre d'Apprentissage de Cacao avec Objective-C (ISBN: 978-1-491-90139-7)
Les Modules sont un nouveau moyen d'inclure et de liens entre fichiers et les bibliothèques dans vos projets. Pour comprendre la façon dont les modules de travail et les avantages qu'ils ont, il est important de regarder en arrière dans l'histoire de l'Objective-C et de l'instruction #import
Chaque fois que vous voulez inclure un fichier pour l'utiliser, vous aurez généralement un code qui ressemble à ceci:
#import "someFile.h"
Ou, dans le cas de cadres:
#import <SomeLibrary/SomeFile.h>
Parce que l'Objective-C est un sur-ensemble du langage de programmation C, l'instruction #import est un mineur de raffinement sur les C #include
déclaration. L'instruction #include est très simple; il copie tout ce qu'il trouve dans le fichier inclus dans votre code lors de la compilation. Cela peut parfois causer des problèmes importants. Par exemple, imaginez que vous avez deux fichiers d'en-tête: SomeFileA.h
et SomeFileB.h
; SomeFileA.h
inclut SomeFileB.h
, et SomeFileB.h
inclut SomeFileA.h
. Cela crée une boucle, et peut confondre le coimpiler. Pour faire face à cela, C programmeurs ont à écrire garde contre ce type d'événement se produise.
Lors de l'utilisation d' #import
, vous n'avez pas besoin de vous soucier de ce problème ou de l'écriture de l'en-tête des gardes pour l'éviter. Toutefois, #import
n'est encore qu'une simple copier-coller d'action, ce qui ralentit le temps de compilation parmi une foule d'autres plus petites, mais toujours très dangereux (comme un fichier inclus primordial quelque chose que vous avez déclaré ailleurs dans votre propre code.)
Les Modules sont une tentative de contourner ce problème. Ils ne sont plus un copier-coller dans le code source, mais un sérialisés représentation de l'inclusion de fichiers pouvant être importés dans votre code source seulement quand et où ils sont nécessaires. Par l'utilisation de modules, code général de la compilation plus rapide et plus sûr que l'aide soit #include ou #import
.
En reprenant l'exemple précédent de l'importation d'un cadre:
#import <SomeLibrary/SomeFile.h>
Pour importer cette bibliothèque en tant que module, le code devrait être modifié afin de:
@import SomeLibrary;
Cela a l'avantage supplémentaire de Xcode reliant la SomeLibrary cadre dans le projet automatiquement. Des Modules vous permettent également d'inclure uniquement les composants dont vous avez vraiment besoin dans votre projet. Par exemple, si vous souhaitez utiliser le AwesomeObject composant dans le AwesomeLibrary cadre, normalement vous devez importer tout juste à utiliser le one piece. Cependant, en utilisant des modules, vous pouvez simplement importer l'objet spécifique que vous souhaitez utiliser:
@import AwesomeLibrary.AwesomeObject;
Pour tous les nouveaux projets réalisés dans Xcode 5, les modules sont activés par défaut. Si vous souhaitez utiliser des modules dans les projets plus anciens (et vous devriez vraiment), ils devront être activé dans le projet de construction de paramètres. Une fois que vous faites cela, vous pouvez utiliser les deux #import
et @import
des déclarations dans votre code, ensemble, sans aucun souci.