Qual é a razão por trás dando Underscore em arquivos de cabeçalho privadas de maçã

StackOverflow https://stackoverflow.com/questions/1829755

  •  11-09-2019
  •  | 
  •  

Pergunta

Tenho visto muitos .h (API Privada) de maçã. A maioria das variáveis ??/ estruturas / enums / classes têm _ como prefixo.

#import <Foundation/NSValue.h>
#import <Foundation/NSObjCRuntime.h>

@class NSString;

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

A minha pergunta é,

O que é a razão por trás dando sublinhado & typedef-los novamente com uma adequada?

Foi útil?

Solução

Objective-C tem um espaço de nome global aberta. É importante que todos os nomes de ser único. Além das razões dadas anteriormente, a Apple se reserva todos os nomes de sublinhado por si. Isso ajudará a evitar colisões de nomes acidentais.

Outras dicas

É geralmente usado como uma bandeira que a entidade em questão é privado e / ou interno e não deve ser usado em seu código diretamente. Eu acho que em versões mais antigas do C você não poderia declarar um struct anônima e assim que você precisava de um nome "filler" para colocar lá.

Eu acredito que está em fim de criar um opaca digite . Isso limita os clientes do tipo de acessar detalhes internos sem usar a interface fornecida. Em seguida, pode usar a estrutura por meio de um opaco ponteiro , e pode declarar matrizes, variáveis, etc de o tipo sem se preocupar com a implementação interna, garantindo que o software não precisarão ser recompilados se a Apple decide mudar o código por trás de tais tipos.

Para declarar estruturas, o estilo de declarar typedef struct _name {...} name remonta aos dias de GCC 2.0 ou assim, quando, como foi mencionado acima, você não poderia ter um struct anônimo.

Para nomes de ivars, o único sublinhado líder é uma convenção de codificação interna da Apple, e oficialmente falando Apple se reserva todos os nomes que começam com sublinhados individuais. Se os nomes da Apple todos os seus ivars dessa maneira, então você não vai colidir com qualquer um dos seus nomes se você não fazê-lo.

Infelizmente, muitos projetos de código de amostra foram publicadas no web site do desenvolvedor da Apple sem passar pelo código e remover sublinhados principais sobre os nomes dos ivar. Isso acontece por duas razões, sendo a principal delas que os desenvolvedores dentro de trabalho da Apple tem o hábito de nomear suas variáveis ??dessa maneira, ea outra razão é que as pessoas rever projetos de código da amostra não têm realmente se importava muito sobre execução de uma codificação standard estilo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top