Cos'è il file Prefix.pch in Xcode?


100

Così tanti sviluppatori stanno aggiungendo varie macro utili al file Prefix.pch. Ma la mia domanda è che cos'è quel Prefix.pchfile.

  • Se rimuovo quel Prefix.pchfile dal mio Xcode, la mia applicazione verrà eseguita? O mostrerà qualche errore? O andrà in crash durante la compilazione?

  • Come posso eseguire la mia applicazione senza Prefix.pchfile


Risposte:


117

Intestazione precompilata.

Che cos'è?

A Prefix.pchè un'intestazione precompilata. Le intestazioni precompilate sono state inventate per rendere la compilazione più veloce . Invece di analizzare continuamente gli stessi file di intestazione, questi file vengono analizzati una volta, in anticipo.

Xcode

In Xcode, aggiungi le importazioni dei file di intestazione che desideri in una "intestazione del prefisso" e li abiliti in Precompile Prefix Headermodo che vengano precompilati. Ma l'idea alla base di un'intestazione di prefisso è diversa dalla precompilazione.

Un'intestazione del prefisso è inclusa implicitamente all'inizio di ogni file sorgente. È come se ogni file sorgente aggiungesse

#import "Prefix.pch"

all'inizio del file, prima di ogni altra cosa.

Rimuovendolo.

È possibile rimuovere l'intestazione precompilata. Questa domanda ha già ricevuto risposta nel thread che sto collegando di seguito. Contiene tutte le informazioni di cui hai bisogno e commenti utili.

Va bene rimuovere il file Prefix.pch dal progetto Xcode?


24

Cos'è il file Prefix.pch?

Un .pch è un'intestazione precompilata.

Nei linguaggi di programmazione C e C ++, un file di intestazione è un file il cui testo può essere automaticamente incluso in un altro file sorgente dal preprocessore C, solitamente specificato dall'uso delle direttive del compilatore nel file sorgente.

Le intestazioni dei prefissi vengono compilate e archiviate in una cache, quindi incluse automaticamente in ogni file durante la compilazione. Ciò può accelerare la compilazione e consente di includere un file senza aggiungere un'istruzione di importazione a ogni file che lo utilizza. Non sono necessari e in realtà la compilazione rallenta ogni volta che vengono modificati.

Sì, puoi compilare ed eseguire il progetto senza file .pch

In Xcode, vai alle impostazioni di compilazione del tuo target (Comando-Opzione-E, scheda build) e deseleziona Precompile Prefix Header (GCC_PRECOMPILE_PREFIX_HEADER). Puoi anche rimuovere il valore dell'impostazione Intestazione prefisso, se lo desideri.

Notare inoltre che,

Non mettere macro in un file .pch! Un file .pch è, per definizione, un'intestazione precompilata specifica del progetto. In realtà non dovrebbe essere utilizzato al di fuori del contesto del progetto e in realtà non dovrebbe contenere nient'altro che #includes e #imports.

Se hai alcune macro e tali da condividere tra le intestazioni, inseriscile in un loro file di intestazione - Common.h o qualsiasi altra cosa - e #includilo all'inizio del .pch


Si prega di considerare l'aggiunta di un commento per indicare il motivo del downvoting di questa vecchia ricerca.
Hemang

7

Le intestazioni dei prefissi vengono compilate e archiviate in una cache, quindi incluse automaticamente in ogni file durante la compilazione. Ciò può accelerare la compilazione e consente di includere un file senza aggiungere un'istruzione di importazione a ogni file che lo utilizza. Non sono necessari e in realtà la compilazione rallenta ogni volta che vengono modificati.

Generalmente la .pchformazione dei nomi dei file èyourProjectName-Prefix.pch


1

Storia:

#include => #import => .pch

#include vs #import

Intestazioni precompilate - prefix.pch

#includevs @importha uno svantaggio: tempo di compilazione lento perché un compilatore deve analizzare e compilare tante volte quanti .hfile sono stati importati.

Precompiled header file - .pch- raccoglie le intestazioni comuni. Quando questo file è precompilato, può essere utilizzato nei file sorgente che accelera i tempi di compilazione.

Diamo un'occhiata al Prefix.pchcampione:

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
#endif

Per aggiungere un .pchfile vai a Build Settings:

inserisci qui la descrizione dell'immagine

Lo sviluppatore deve gestire .pchfile che impongono costi aggiuntivi per supportarlo.

Il passaggio successivo è @import[Informazioni]

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.