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?
James Raitsev
fonte
5
Verifique o link: cocoasamurai.blogspot.com/2006/09/…
rptwsthi
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

Erre Efe
fonte
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.

dayitv89
fonte
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.

Jogador
fonte
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.

Maxim Chetrusca
fonte
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

Saurabh Hooda
fonte
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

teriiehina
fonte
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 -
Jeba Moses
fonte
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