Xcode: Copia Intestazioni: Pubblico o Privato vs. Progetto?

Sto costruendo una Cocoa Touch Libreria Statica. Come devo decidere se copiare un file di intestazione pubblici, privati, o di un progetto?

InformationsquelleAutor ma11hew28 | 2011-09-16

 

3 Replies
  1. 102

    Pubblico: L’interfaccia è finalizzato e destinati a essere utilizzati dal prodotto i clienti. Un pubblico intestazione è incluso nel prodotto codice sorgente leggibile senza restrizioni.

    Privato: L’interfaccia non è inteso per i vostri clienti o nelle prime fasi di sviluppo. Un privato intestazione è incluso nel prodotto, ma è contrassegnato da “privato”. Così i simboli sono visibili a tutti i clienti, ma i clienti devono capire che non dovrebbero usarli.

    Progetto: L’interfaccia è per uso solo da file di implementazione del progetto corrente. Un progetto di intestazione non è incluso nella destinazione, ad eccezione di codice oggetto. I simboli non sono visibili ai clienti, solo per voi.

    Fonte: Xcode Developer Library > Strumenti & Lingue > Idi > Progetto Guida dell’Editor > impostare la Visibilità di un File di Intestazione

    • Randy – Si dovrebbe unire la Potenza della risposta nel tuo, per rendere una migliore risposta unica, imho.
    • Questo non è corretto. Apple potrebbe aver documentato che – ma non la sua attuazione. “Pubblico” le intestazioni IMPEDIRE la distribuzione di app (bug in Xcode) a meno che non si de-coppia i vostri progetti (nessun incorporamento di file di progetto!)
    • Qualcuno sa DOVE DIAMINE sono le opzioni per il file di intestazione in XCode 5?!
    • Li potete trovare nel File di Ispezione di sotto dei Target di Appartenenza’.
  2. 25

    Randy risposta è buona e ti fornisce tutte le pertinenti sfondo. Volevo aggiungere alcune informazioni per aiutarvi in base a come si aspettano la vostra libreria verrà utilizzato.

    PROGETTO: Se si sta distribuendo il vostro progetto, e ci aspettiamo che gli utenti di includere il tuo progetto come un sub-progetto nella propria, si dovrebbe garantire che le intestazioni sono contrassegnati come ‘progetto’. Non facendolo, si porta a problemi come questo:
    Xcode 4 Archivio Versione Non Specificato

    Di notare che questo vale per ogni sub-progetto…compresi i sub-progetti di sub-progetti, in modo ricorsivo.

    PUBBLICO: Se si prevede che gli utenti della libreria di collegamento solo contro il tuo oggetto (e NON sono il vostro progetto originale), assicurarsi che le intestazioni sono contrassegnati come ‘pubblico’ (solo per le intestazioni devono riferirsi).

    • E il punto più importante qui è da ricordare: Apple attualmente rende impossibile semplicemente “distribuire una libreria” e consentire agli utenti di decidere come usarlo, a causa del bug di cui sopra (bug in xcode: se una libreria è intestazioni pubbliche, ed è incorporato, Xcode archiver interruzioni senza soluzione)
    • se si sta parlando di un bug in Xcode, si prega di includere il numero di versione. COSÌ risposte bastone intorno a un lungo periodo di tempo, e un bug per ora non sta andando essere un bug dopo l’ $SOME_RELEASE.
    • COSÌ è stato progettato per affrontare con risposte che cambiano nel tempo – non vedo un problema qui. Oltre a quello … quando Apple inizia l’emissione di note di rilascio per Xcode (credo che la maggior parte di Xcode modifiche vengono rimossi dalle note di rilascio prima che apple li pubblica), e inizia ad ammettere i bug conosciuti, avremo tempo di fare questi aggiornamenti manualmente. Fino ad allora, è troppo sforzo per modificare costantemente e ri-modificare e ri-controllare i molti post che riguardano i principali bug su Xcode.
    • versione? Tutti da 1 a 5.1 e il conteggio. Mi hanno segnalato questo e altri 20 bug che durante gli ultimi 12 mesi. Una nuova versione di Xcode (5) è stato rilasciato e, come bonus, abbiamo ancora tutti i bug. Alcuni dei miei bug sono stati contrassegnati come duplicato e nulla è stato fatto. Hanno deciso di migliorare l’interfaccia, invece. Oggi, il mio Xcode 5.1 si è schiantato 12 volte…. e il conteggio.
    • L’alimentazione Se un pubblico intestazione include un file di intestazione HeaderB.h, e HeaderB.h include un altro file di intestazione HeaderC.h, che dovrebbe essere la visibilità di HeaderB.h, HeaderC.h. Secondo me, tutte le intestazioni che sono visibili in pubblico intestazione del file, ma non direttamente inclusi nel progetto, verrà contrassegnato come Privato e tutte le intestazioni che sono inclusi in questi headers Privati possono essere contrassegnati come Intestazione di Progetto. Io sono di collegare la libreria anziché come un sottoprogetto.
    • In generale mi consiglia contro l’importazione di nulla, tranne richiesto Apple strutture di Fondazione, UIKit), in ogni .h file. Se avete bisogno di intestazione di fare riferimento a qualche altra classe, è possibile utilizzare la funzione @ classe forward dichiarazioni. Il tuo .m file dovrebbe importare ciò di cui ha bisogno. Come un a parte, può essere difficile da rintracciare indesiderati/accidentale importazioni, quindi vale la pena di essere deliberata dall’inizio. 😉

  3. 0

    Public – Consente l’accesso al codice all’interno del modulo stesso, o ad un altro modulo che importa il modulo, il codice è dichiarato in.

    Internal – Permette di accedere al codice nel modulo stesso, ma non a qualsiasi altro modulo. Questo è taylor Swift livello di accesso predefinito.

    Private – Limita l’accesso al file di origine, il codice è dichiarato in. Anche se è tipico avere una sola classe, la struttura, enum, etc. definiti in un file di codice sorgente, è possibile dichiarare più di uno per ogni file.

    Xcode: Copia Intestazioni: Pubblico o Privato vs. Progetto?

    Questi titoli sono un po ‘ fuorviante tutte le intestazioni sarà effettivamente visibile ai vostri clienti e esplorabile nel finder, ma in modo esplicito le intestazioni pubblico è necessario importarli nel ombrello di intestazione. [Su Target di Appartenenza]

    La fonte è qui e qui

Lascia un commento