Objective-C ile Kakao Öğrenme kitabında bulabileceğiniz hoş bir cevap (ISBN: 978-1-491-90139-7)
Modüller, dosyaları ve kütüphaneleri projelerinize dahil etmenin ve bağlantılandırmanın yeni bir yoludur. Modüllerin nasıl çalıştığını ve ne gibi avantajlara sahip olduklarını anlamak için, Objective-C ve #import deyiminin geçmişine geri bakmak önemlidir.
#import "someFile.h"
Veya çerçeveler söz konusu olduğunda:
#import <SomeLibrary/SomeFile.h>
Objective-C, C programlama dilinin bir üst kümesi olduğundan, #import durumu C'nin #include
ifadesine göre küçük bir ayrıntılandırmadır . #İnclude deyimi çok basittir; derleme sırasında dahil edilen dosyada bulduğu her şeyi kodunuza kopyalar. Bu bazen önemli sorunlara neden olabilir. Örneğin, iki başlık dosyanız olduğunu düşünün: SomeFileA.h
ve SomeFileB.h
; SomeFileA.h
içerir SomeFileB.h
ve SomeFileB.h
içerir SomeFileA.h
. Bu bir döngü oluşturur ve coimpiler'ı karıştırabilir. Bununla başa çıkmak için, C programcıları bu tür olaylara karşı korumalar yazmalıdır.
Kullanırken #import
, bu sorun hakkında endişelenmenize veya önlemek için başlık korumaları yazmanıza gerek yoktur. Bununla birlikte, #import
hala sadece yüceltilmiş bir kopyala-yapıştır eylemi, diğer daha küçük ama yine de çok tehlikeli konular arasında yavaş derleme süresine neden oluyor (kendi kodunuzda başka bir yerde bildirdiğiniz bir şeyi geçersiz kılan bir dosya gibi).
Modüller bunun üstesinden gelmek için bir girişimdir. Artık kaynak koduna bir kopyala ve yapıştır değil, yalnızca gerektiğinde ve yerde kaynak kodunuza alınabilen içerilen dosyaların serileştirilmiş bir temsilidir. Modülleri kullanarak, kod genellikle daha hızlı derlenir ve #include veya #import
.
Bir çerçeveyi içe aktarmak için önceki örneğe dönme:
#import <SomeLibrary/SomeFile.h>
Bu kütüphaneyi modül olarak içe aktarmak için kod şu şekilde değiştirilecektir:
@import SomeLibrary;
Bu, SomeLibrary çerçevesini otomatik olarak projeye bağlayan Xcode ek bonusuna sahiptir. Modüller ayrıca yalnızca gerçekten ihtiyaç duyduğunuz bileşenleri projenize dahil etmenizi sağlar. Örneğin, AwesomeObject bileşenini AwesomeLibrary çerçevesinde kullanmak istiyorsanız, normalde her şeyi sadece tek parçayı kullanmak için içe aktarmanız gerekir. Ancak, modülleri kullanarak kullanmak istediğiniz belirli nesneyi içe aktarabilirsiniz:
@import AwesomeLibrary.AwesomeObject;
Xcode 5'te yapılan tüm yeni projeler için modüller varsayılan olarak etkindir. Modülleri eski projelerde kullanmak istiyorsanız (ve gerçekten yapmanız gerekir) projenin derleme ayarlarında etkinleştirilmeleri gerekir. Bunu yaptıktan sonra, herhangi bir endişe duymadan kodunuzdaki hem #import
ve @import
ifadeleri birlikte kullanabilirsiniz .