¿Cuál es la razón detrás dando subrayado en los archivos de cabecera privadas de manzana

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

  •  11-09-2019
  •  | 
  •  

Pregunta

He visto a muchos .h (API privada), acerca de manzana. La mayor parte de las variables / estructuras / enumeraciones / clases tienen como prefijo _.

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

@class NSString;

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

Mi pregunta es:

¿Qué es la razón detrás dando subrayan y typedef de nuevo con una adecuada?

¿Fue útil?

Solución

Objetivo-C tiene un espacio de nombres global abierta. Es importante que todos los nombres sean únicos. Además de las razones expuestas anteriormente, Apple se reserva todos los nombres subrayan por sí mismo. Esto ayudará a evitar conflictos de nombres accidentales.

Otros consejos

Se utiliza generalmente como un indicador de que la entidad en cuestión es privado y / o interna y no debe ser utilizado en su código directamente. Creo que en las versiones anteriores de C no se podía declarar una estructura anónima y por lo que necesitaba un nombre de "relleno" para poner allí.

Creo que es el fin de crear un opaca . Esto limita clientes del tipo de acceder a los detalles internos sin utilizar la interfaz proporcionada. A continuación, puede utilizar la estructura a través de un opaca puntero , y puede declarar un arreglo, variables, etc de no necesitará el tipo sin tener que preocuparse acerca de la implementación interna en aras de software para compilar si Apple decide cambiar el código detrás de tales tipos.

En las declaraciones sobre las estructuras, el estilo de declarar typedef struct _name {...} name se remonta a los días de GCC 2.0 o menos, cuando, como se ha mencionado anteriormente, usted podría no tener una estructura anónima.

Para los nombres de Ivars, la única subrayado inicial es una convención de codificación interna de Apple, y oficialmente hablando Apple se reserva todos los nombres que comienzan con guiones individuales. Si los nombres de Apple todos sus Ivars de esa manera, entonces no chocar con cualquiera de sus nombres si no lo hace.

Por desgracia, muchos proyectos de código de ejemplo se han publicado en el sitio web de desarrolladores de Apple sin pasar por el código y eliminar subrayado iniciales sobre los nombres de Ivar. Esto sucede por dos razones, la principal es que los desarrolladores que trabajan en el interior de la manzana tienen la costumbre de nombrar a sus variables de esa manera, y la otra razón es que la gente revisión de los proyectos de código de ejemplo en realidad no han importado mucho la aplicación de una norma de codificación estilo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top