Jawaban yang bagus dapat Anda temukan dalam buku Learning Cocoa with Objective-C (ISBN: 978-1-491-90139-7)
Modul adalah cara baru untuk memasukkan dan menautkan file dan perpustakaan ke proyek Anda. Untuk memahami bagaimana modul bekerja dan manfaat apa yang mereka miliki, penting untuk melihat kembali sejarah Objective-C dan pernyataan #import Setiap kali Anda ingin menyertakan file untuk digunakan, Anda biasanya akan memiliki beberapa kode yang terlihat seperti ini:
#import "someFile.h"
Atau dalam hal kerangka kerja:
#import <SomeLibrary/SomeFile.h>
Karena Objective-C adalah superset dari bahasa pemrograman C, pernyataan #import adalah perbaikan kecil pada #include
pernyataan C. Pernyataan #include sangat sederhana; itu menyalin semua yang ditemukan dalam file yang disertakan ke dalam kode Anda selama kompilasi. Ini kadang-kadang dapat menyebabkan masalah yang signifikan. Misalnya, bayangkan Anda memiliki dua file header: SomeFileA.h
dan SomeFileB.h
; SomeFileA.h
termasuk SomeFileB.h
, dan SomeFileB.h
termasuk SomeFileA.h
. Ini menciptakan loop, dan dapat membingungkan coimpiler. Untuk mengatasi hal ini, programmer C harus menulis penjaga terhadap jenis peristiwa ini agar tidak terjadi.
Saat menggunakan #import
, Anda tidak perlu khawatir tentang masalah ini atau menulis pelindung kepala untuk menghindarinya. Namun, #import
masih merupakan tindakan salin dan tempel yang dimuliakan, menyebabkan waktu kompilasi yang lambat di antara sejumlah masalah lain yang lebih kecil namun masih sangat berbahaya (seperti file yang disertakan menimpa sesuatu yang telah Anda nyatakan di tempat lain dalam kode Anda sendiri.)
Modul adalah upaya untuk mengatasi ini. Mereka bukan lagi copy-paste ke kode sumber, tetapi representasi serial dari file yang disertakan yang dapat diimpor ke kode sumber Anda hanya kapan dan di mana mereka dibutuhkan. Dengan menggunakan modul, kode umumnya akan dikompilasi lebih cepat, dan lebih aman daripada menggunakan #include atau #import
.
Kembali ke contoh mengimpor kerangka kerja sebelumnya:
#import <SomeLibrary/SomeFile.h>
Untuk mengimpor perpustakaan ini sebagai modul, kode akan diubah menjadi:
@import SomeLibrary;
Ini memiliki bonus tambahan Xcode yang menghubungkan kerangka SomeLibrary ke proyek secara otomatis. Modul juga memungkinkan Anda untuk hanya memasukkan komponen yang benar-benar Anda butuhkan ke dalam proyek Anda. Misalnya, jika Anda ingin menggunakan komponen AwesomeObject dalam kerangka AwesomeLibrary, biasanya Anda harus mengimpor semuanya hanya untuk menggunakan bagian yang satu. Namun, menggunakan modul, Anda bisa mengimpor objek tertentu yang ingin Anda gunakan:
@import AwesomeLibrary.AwesomeObject;
Untuk semua proyek baru yang dibuat dalam Xcode 5, modul diaktifkan secara default. Jika Anda ingin menggunakan modul dalam proyek yang lebih lama (dan Anda benar-benar harus) mereka harus diaktifkan di pengaturan pembangunan proyek. Setelah Anda melakukannya, Anda dapat menggunakan keduanya #import
dan @import
pernyataan dalam kode Anda bersama-sama tanpa masalah.