O que é o arquivo Prefix.pch no Xcode?


100

Muitos desenvolvedores estão adicionando várias macros de conveniência ao Prefix.pch. Mas minha pergunta é o que é esse Prefix.pcharquivo.

  • Se eu remover esse Prefix.pcharquivo do meu Xcode, meu aplicativo será executado? Ou vai mostrar algum erro? Ou irá travar durante a construção?

  • Como posso executar meu aplicativo sem Prefix.pcharquivo


Respostas:


117

Cabeçalho pré-compilado.

O que é isso?

A Prefix.pché um cabeçalho pré-compilado. Os cabeçalhos pré-compilados foram inventados para tornar a compilação mais rápida . Em vez de analisar os mesmos arquivos de cabeçalho repetidamente, esses arquivos são analisados ​​uma vez, antes do tempo.

Xcode

No Xcode, você adiciona importações dos arquivos de cabeçalho que deseja em um “cabeçalho de prefixo” e habilita Precompile Prefix Headerpara que sejam pré-compilados. Mas a ideia por trás de um cabeçalho de prefixo é diferente da pré-compilação.

Um cabeçalho de prefixo é incluído implicitamente no início de cada arquivo de origem. É como se cada arquivo de origem adicionasse

#import "Prefix.pch"

na parte superior do arquivo, antes de mais nada.

Removendo.

Você pode remover o cabeçalho pré-compilado. Esta pergunta já foi respondida no tópico que estou ligando abaixo. Ele contém todas as informações de que você precisa, bem como comentários úteis.

Posso remover o arquivo Prefix.pch do projeto Xcode?


24

O que é o arquivo Prefix.pch?

Um .pch é um cabeçalho pré-compilado.

Nas linguagens de programação C e C ++, um arquivo de cabeçalho é um arquivo cujo texto pode ser incluído automaticamente em outro arquivo de origem pelo pré-processador C, geralmente especificado pelo uso de diretivas de compilador no arquivo de origem.

Os cabeçalhos de prefixo são compilados e armazenados em um cache e, em seguida, incluídos automaticamente em cada arquivo durante a compilação. Isso pode acelerar a compilação e permite incluir um arquivo sem adicionar uma instrução de importação a cada arquivo que o usa. Eles não são obrigatórios e, na verdade, tornam a compilação lenta sempre que você os altera.

Sim, você pode compilar e executar o projeto sem o arquivo .pch

No Xcode, vá para as configurações de compilação do seu destino (Command-Option-E, guia build) e desmarque o cabeçalho do prefixo de pré-compilação (GCC_PRECOMPILE_PREFIX_HEADER). Você também pode remover o valor da configuração Prefix Header, se desejar.

Observe também que,

Não coloque macros em um arquivo a.pch! Um arquivo .pch é, por definição, um cabeçalho pré-compilado específico do projeto. Ele realmente não deve ser usado fora do contexto do projeto e realmente não deve conter nada além de #includes e #imports.

Se você tem algumas macros e deseja compartilhar entre os cabeçalhos, cole-as em um arquivo de cabeçalho próprio - Common.h ou qualquer outro - e # inclua isso no início do .pch


Considere adicionar um comentário para indicar o motivo do downvoting nesta busca antiga.
Hemang

7

Os cabeçalhos de prefixo são compilados e armazenados em um cache e, em seguida, incluídos automaticamente em cada arquivo durante a compilação. Isso pode acelerar a compilação e permite incluir um arquivo sem adicionar uma instrução de importação a cada arquivo que o usa. Eles não são obrigatórios e, na verdade, tornam a compilação lenta sempre que você os altera.

Geralmente, a .pchformação de nomenclatura de arquivo éyourProjectName-Prefix.pch


1

História:

#include => #import => .pch

#include vs #import

Cabeçalhos pré-compilados - prefix.pch

#includevs @importtem uma desvantagem - tempo de construção lento porque um compilador deve analisar e compilar tantas vezes quantos .harquivos foram importados.

Precompiled header file - .pch- coleta os cabeçalhos comuns. Quando este arquivo é pré-compilado, ele pode ser usado em arquivos de origem, o que acelera o tempo de construção.

Vamos dar uma olhada no Prefix.pchexemplo:

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

Para adicionar o .pcharquivo, vá para Build Settings:

insira a descrição da imagem aqui

O desenvolvedor precisa gerenciar o .pcharquivo que impõe custos adicionais para apoiá-lo.

A próxima etapa é @import[Sobre]

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.