2012-05-03 17 views
5

Come nuovo sviluppatore di MAc proveniente da VS, non ho davvero un'idea di cosa sia un framework. Se aggiungo un framework al mio progetto, questo significa automaticamente che le intestazioni dovrebbero essere trovate quando faccio #include <SomeFile.h>?XCode3 - relazione tra i percorsi di ricerca della libreria e i quadri di progetto

Mi sembra di trovare in alcuni casi che devo aggiungere anche i percorsi di ricerca intestazione. Significa che la struttura non funziona correttamente?

risposta

3

Se il framework è scritto correttamente, contiene le intestazioni e il file linkabile (binario) effettivo. Il compilatore (GCC in precedenza, LLVM-clang di recente) riconosce i percorsi del framework e sa automaticamente dove cercare gli header del framework. Ci sono alcuni casi angolo però:

  1. Se non aggiungi un quadro, ma in realtà una biblioteca tradizionale Unix (libsqlite3.dylib, libxml2.dylib ecc) da/usr/lib. Quindi potrebbe essere il caso che la libreria abbia un percorso di inclusione separato (non standard); questo è comune, per esempio, nel caso di glib. In questo caso devi aggiungere /usr/include/glib-2.0 al tuo percorso di ricerca dell'intestazione.
  2. Il caso opposto: quando si incontrano alcuni dei framework "Umbrella" (ad esempio, Core Audio è suddiviso in piccoli subframeworks, come AudioToolbox.framework ecc.), Quindi quel particolare framework non contiene una dinamica collegabile libreria, solo intestazioni.

Spero che questo aiuti.

4

come definito dalla Apple Conceptual Documentation:

Un quadro è una directory gerarchica che incapsula condiviso risorse, come ad esempio una libreria dinamica condivisa, file pennino, file di immagini, stringhe localizzate, i file di intestazione e di riferimento documentazione in un unico pacchetto .

In altre parole, è una raccolta di risorse che può essere utilizzata da una o più applicazioni e non è un'applicazione di per sé.

dettagliata da parte del Apple Conceptual Documentation:

È includono file header quadro nel codice utilizzando la direttiva #include . Se si lavora in Objective-C, è possibile utilizzare la direttiva #import anziché la direttiva #include. Le due direttive hanno gli stessi risultati di base. ma la direttiva #import garantisce che lo stesso file di intestazione non venga mai incluso più di una volta. Ci sono due modi per includere le intestazioni quadro:

#include <Framework_name/Header_filename.h> 
#import <Framework_name/Header_filename.h> 

In entrambi i casi, Framework_name è il nome del quadro e Header_filename è il nome di un file di intestazione in tale contesto o in uno dei suoi quadri secondari.

Quando si includono i file di intestazione della struttura, è normale includere solo il file di intestazione della struttura master. Il file di intestazione principale è il file di intestazione il cui nome corrisponde al nome del framework.Ad esempio, , il framework della Rubrica ha un file di intestazione principale con il nome AddressBook.h.

Per includere quadri personalizzati:

Se i collegamenti del progetto a quadri non sono inclusi in nessuna delle percorsi standard, è necessario specificare in modo esplicito la posizione del che disciplina prima Xcode in grado di individuare la sua file di intestazione. Per specificare l'ubicazione di tale framework, aggiungere la directory contenente il framework allo “Framework Search Paths” option of your Xcode project. Xcode passa questo elenco di directory al compilatore e al linker , che utilizzano entrambi l'elenco per cercare le risorse del framework.

Problemi correlati