# açılı parantezler <> ve tırnak işaretleri kullanarak içe aktar ""


120

Objective-C'ye dosya aktarırken <Header.h>veya kullanmanıza izin verilip verilmeyeceğine neyin karar verdiğini merak ediyorum "Header.h". Şimdiye kadar benim gözlemim, ""projenizdeki uygulama kaynağına sahip olduğunuz dosyalar için tırnak işaretleri ve <>bir kitaplık veya çerçeveye atıfta bulunurken köşeli parantezler kullanmanız oldu.

Ama bu tam olarak nasıl çalışıyor? Parantezleri kullanmak için kendi sınıflarımı almak için ne yapmam gerekir? Şu anda Xcode, bunu kendi başlıklarım için yapmama izin vermiyor.

Ayrıca, bazı çerçeve başlıklarına baktığımda, başlıkların birbirine referans verdiğini görüyorum <frameworkname/file.h>. Nasıl bu işi? Java'daki paketlere çok benziyor, ancak bildiğim kadarıyla Objective-C'de paket diye bir şey yok.

Yanıtlar:


122

Objective-C, C / C ++ ile ortak bir noktaya sahiptir; alıntılanan form "yerel" dosya kapsamı içindir (örneğin, geçerli dosyadan göreceli yolu belirtmeniz gerekir #include "headers/my_header.h"), açılı ayraç formu ise "genel" içerir - dahil etme yolunda bir yerde bulunanlar derleyici (örneğin #include <math.h>).

Yani kendi başlıkları kullanmak zorunda < >değil " ", akraba ya da derleyici için başlık dizini için mutlak yolunu ya geçmeleri gerekiyor. Bunun Xcode'da nasıl yapılacağı hakkında bilgi için "Xcode için global içerme yolu nasıl eklenir" konusuna bakın .

Daha fazla bilgi için bu MSDN sayfasına bakın .


1
AFNetworking'i #import <AFNetworking / AFHTTPRequestOperationManager.h> olarak adlandıran bir GitHub projesiyle ilgili bir sorun yaşadım, bu yüzden Header Search Path olarak $ (SRCROOT) / lib / AFNetworking'e gitmem gerekti. Bu klasörün altında AFNetworking adlı başka bir klasör vardır ve bu, açılı parantezlerle içe aktarmanın onu bu yolla nasıl bulduğudur. Normalde #import "AFHTTPRequestOperationManager.h" çalışır, ancak bu proje için yalnızca farklı bir şekilde başvurur.
Brennan

Nedeni C / C ++ ile aynı gibi görünüyor. Açılı ayraç (<> simgesiyle gösterilir), geçerli yerel dizinden başka bir dosya arandığını gösterirken, tırnak işaretleri ("" simgesiyle gösterilir) geçerli yerel dizinde dosya arandığını gösterir.
Jayprakash Dubey

Cevabın sonundaki bağlantı güncel değil.
Pang

14

C'de, kural, <>parantez içindeki başlık dosyalarının 'sistem' dizinlerinde ve ""kullanıcı veya yerel dizinlerde aranmasıdır .

Sistem ve yerel tanımları biraz belirsiz sanırım. İçerme yolundaki sistem dizinlerinde veya <header.h> için CPPFLAGS'de göründüğüne ve derleyiciye -I ile belirtilen yerel dizin veya dizinin "header.h" dosyaları için arandığına inanıyorum.

Objective-C için benzer şekilde çalıştığını varsayıyorum.


6

"<>" Kullanarak kendi sınıflarınızı içe aktarmak için başlık dosyalarını (* .h) derleyicinin lib klasörüne koymanız veya lib klasörünüze bir SİSTEM DEĞİŞKENLERİ pontingi ayarlamanız gerekir.


2

Veya açılı ayraçları kullanabilmeniz Always Search User Pathiçin ayarlayın YES.


1

Köşeli parantezlerle, örneğin <Foundation/Foundation.h>sistem dosyalarını içe aktarırsınız.

"Person.h"Yerel dosyaları (oluşturduğunuz dosyaları) içe aktarmak ve derleyiciye bunları nerede arayacağını söylemek için çift ​​tırnak kullanırsınız .


1

<Name.h>- Angle bracketsönişlemciye önceden belirlenmiş özel bir sistemin dizinlerinde arama yapmasını söyler . Örneğin, <UIKit/UIKit.h>çerçeveler gibi sistem başlıklarını içe aktarırsınız veya eklersiniz

"Name.h"- Quotation marksönişlemciye geçerli bir dizinde arama yapmasını söyler . Bir başlık bulunamazsa, önişlemci kullanmaya çalışır <Name.h>. Genellikle projenizin dosyalarıyla birlikte kullanmalısınız


0

Aynı sorunla karşılaştım, 2 tür arama yolu vardır: Xcode:

User Header Search Paths
Header Search Paths

Başlık Arama Yollarına kendi dahil etme klasörlerinizi eklerseniz, herhangi bir sorun yaşamadan açılı parantez kullanabilirsiniz.


-4

HEADER FILE NEDİR? Üstbilgi dosyaları, ön işlemci #include deyimi kullanılarak herhangi bir C programına dahil edilebilen işlev ve değişken tanımlarını içerir. Standart başlık dosyaları her derleyiciyle birlikte sağlanır ve bir dizi alanı, dize işlemeyi, matematiksel, veri dönüştürme, yazdırma ve değişkenlerin okunmasını kapsar. Örneğin, bir derleyicide scanf () gibi girdiler ve printf () işlevi vb. Gibi çıktılar hakkında bilgi içerir.

DAHİL ETMEK

1) #INCLUDE: - Ana fonksiyondan önce işleyen bir ön işlemcidir. Ön işlemcinin ana işi, programın ortamını yani başlık dosyasıyla programı başlatmaktır. 2) .h: - (Başlık dosyası) Başlık dosyası, C işlev bildirimlerini ve makro tanımlarını içeren ve birkaç kaynak dosya arasında paylaşılacak .h uzantılı bir dosyadır. S) İki tür başlık dosyası vardır: programcının yazdığı dosyalar ve derleyicinizle birlikte gelen dosyalar? A) Açısal parantez içinde Köşeli parantez formu "genel" kapsama içindir - derleyiciye iletilen içerme yolunda bir yerde bulunanlar (örneğin #include) Derleyicide tanımlanmış olan kütüphane işlevinin kullanımı için kullanılır. C'de kural, <> parantez içindeki başlık dosyalarının 'sistem'de aranmasıdır. dizinler B) Alıntı işaretleri: - "başlık.h" alıntı formu, dosyaların "yerel" içeriği içindir (mevcut dosyadan göreli yolu belirtmeniz gerekir, örneğin #include "başlıklar / başlığım.h") C'de konvansiyon "" içindeki başlık dosyalarının kullanıcı veya yerel dizinlerde aranmasıdır. İçinde başka bir dosyaya eklenecek bir dosya. (DOSYA DAHİL). İki durumda kullanılabilir: Durum 1: Çok büyük bir programımız varsa, kod en iyi, her biri bir dizi ilgili işlevi içeren birkaç farklı dosyaya bölünür. Durum 2: Yazdığımız tüm programlarda en çok ihtiyacımız olan bazı fonksiyonlar ve mikro tanımlamalar vardır. eski ) C'de kural, "" içindeki başlık dosyalarının kullanıcı veya yerel dizinlerde aranmasıdır. İçinde başka bir dosyaya eklenecek bir dosya. (DOSYA DAHİL). İki durumda kullanılabilir: Durum 1: Çok büyük bir programımız varsa, kod en iyi, her biri bir dizi ilgili işlevi içeren birkaç farklı dosyaya bölünür. Durum 2: Yazdığımız tüm programlarda en çok ihtiyacımız olan bazı fonksiyonlar ve mikro tanımlamalar vardır. eski ) C'de kural, "" içindeki başlık dosyalarının kullanıcı veya yerel dizinlerde aranmasıdır. İçinde başka bir dosyaya eklenecek bir dosya. (DOSYA DAHİL). İki durumda kullanılabilir: Durum 1: Çok büyük bir programımız varsa, kod en iyi, her biri bir dizi ilgili işlevi içeren birkaç farklı dosyaya bölünür. Durum 2: Yazdığımız tüm programlarda en çok ihtiyacımız olan bazı fonksiyonlar ve mikro tanımlamalar vardır. eski

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.