Qual é o significado das marcas #pragma? Por que precisamos de marcas #pragma?


279

Qual é o objetivo das #pragmamarcas no Xcode? A localização deles nos .marquivos é importante? Alguns devem #pragmavir antes de todos os outros?

  • Eles têm que estar presentes?
  • Novas marcas podem ser adicionadas? Por que eles seriam? O que causa isso?
  • Existe algum mal em remover uma marca? Alguém iria querer?


Eu pessoalmente não gosto deles. Sério, você quer pensar sobre onde deve colocar um método o tempo todo? Há coisas muito mais importantes para se manter organizado, como prestar atenção ao princípio da responsabilidade única
— Brad Thomas

2
Para linguagem rápida, a marca #Pragma não funcionará. Use #MARK ou #FIXME ou #TODO consultar este link para mais informações stackoverflow.com/a/33040068/1753005
— Jayprakash Dubey

Respostas:


315

#pragma markdiretivas aparecem no Xcode nos menus para acesso direto aos métodos. Eles não têm nenhum impacto sobre o programa.

Por exemplo, usá-lo com o Xcode 4 fará com que esses itens apareçam diretamente na Barra de Atalhos.

Há um especial pragma mark -que cria uma linha.

insira a descrição da imagem aqui


Aprecie a resposta - você poderia postar uma resposta atualizada mostrando como são as marcas de pragma (nesse menu ou onde quer que estejam agora) no novo XCode?
— user7804781

Existe um equivalente em Python?
— Edward Falk

@EdwardFalk Ele é específico IDE, por isso realmente depende do seu editor IDE / text
— Michael Ozeryansky

Meu compilador GCC deu o aviso, foo.h: 52: 0: warning: ignoring #pragma mark [-Wunknown-pragmas] #pragma mark -, que não é fatal. Então o gcc provavelmente não sabe sobre '-'.
— Kemin Zhou

55

#pragma marké usado para marcar o grupo de métodos, para que você possa encontrar e detectar métodos facilmente na barra de salto. Isso pode ajudá-lo quando seus arquivos de código atingirem cerca de 1000 linhas e você desejar encontrar métodos rapidamente na categoria da caixa Ir.

Em um programa longo, fica difícil lembrar e encontrar um nome de método. Portanto, a marca pragma permite categorizar métodos de acordo com o trabalho que eles fazem. Por exemplo, você marcou alguma tag para métodos de protocolo de exibição de tabela, métodos de AlertView, métodos de inicialização, declaração etc.

#pragma marké o recurso para o XCode, mas não tem impacto no seu código. Apenas ajuda a facilitar a localização de métodos durante a codificação.


21

Em palavras simples, podemos dizer que #pragma mark -é usado para categorizar métodos, para que você possa encontrar seus métodos facilmente. É muito útil para projetos longos.


13

Apenas para adicionar as informações que eu estava procurando: pragma marké específico do Xcode, portanto, se você lida com um projeto C ++ que você abre em IDEs diferentes, ele não tem nenhum efeito lá. No Qt Creator, por exemplo, ele não adiciona categorias para métodos, nem gera avisos / erros.

EDITAR

#pragmaé uma diretiva de pré-processador que vem da linguagem de programação C. Seu objetivo é especificar informações dependentes da implementação para o compilador - ou seja, cada compilador pode optar por interpretar essa diretiva como desejar. Dito isto, é considerada uma extensão que não altera / influencia o próprio código. Portanto, os compiladores podem ignorá-lo.

O Xcode é um IDE que aproveita #pragmae o usa de maneira específica. O ponto é que #pragmanão é o Xcode e nem o Objective-C específico.


11

Quando temos uma classe grande / longa, digamos que mais de 100 linhas de código não podemos ver tudo na tela Monitor, portanto, não podemos ver a visão geral (também chamada de itens de documento) da nossa classe. Em algum momento, queremos ver uma visão geral da nossa classe; todos os seus métodos, constantes, propriedades, etc, de relance. Você pode pressionar Ctrl + 6 no XCode para ver a visão geral da sua turma. Você obterá um tipo de janela pop-up, também conhecida como Jump Bar.

Por padrão, essa barra de salto não possui baldes / seções. É apenas uma longa lista. (Embora possamos começar a digitar quando a barra de salto aparecer e ela pesquisar entre os itens da barra de salto). Aí vem a necessidade depragma mark

Se você deseja criar seções na sua Barra de Atalhos, poderá usar marcas de pragma com a descrição relevante. Agora consulte o instantâneo anexado em questão. Existem 'Exibir ciclo de vida' e 'Uma seção dedicada ..' são seções criadas por pragma marks


10

Enquanto procurava por um documento para apontar como pragma são diretivas para o compilador, encontrei este artigo do NSHipster que faz o trabalho muito bem.

Espero que você goste da leitura


7
#pragma mark - NSSecureCoding

O principal objetivo do "pragma" é para referência do desenvolvedor.insira a descrição da imagem aqui

Você pode encontrar facilmente um método / função em milhares de linhas de codificação.

Xcode 11+:

Linha de Marcador no Topo

// MARK: - Properties

Linha de marcador na parte superior e inferior

// MARK: - Properties - 

Linha de marcador apenas na parte inferior

// MARK: Properties -

Para que eu possa remover a linha? seu desperdício de espaço para o meu cérebro.

1
A remoção de # pragma-mark não afetará nenhuma funcionalidade do seu código, mas seu código poderá perder a legibilidade. Se você realmente não quer, pode removê-lo.
— Jeba Moses 17/02/17
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.