В чем причина указания подчеркивания в личных заголовочных файлах Apple

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

  •  11-09-2019
  •  | 
  •  

Вопрос

Я видел много .h (Частные API) apple.Большинство переменных / структур / перечислений / классов имеют _ в качестве префикса.

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

@class NSString;

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

Мой вопрос заключается в следующем,

В чем причина того, чтобы снова указать подчеркивание и ввести их с помощью правильного?

Это было полезно?

Решение

Objective-C имеет глобально открытое пространство имен.Важно, чтобы все имена были уникальными.В дополнение к причинам, указанным ранее, Apple сохраняет все имена с подчеркиванием за собой.Это поможет предотвратить случайные коллизии имен.

Другие советы

Обычно он используется как флаг, указывающий на то, что рассматриваемая сущность является частной и / или внутренней и не должна использоваться в вашем коде напрямую.Я думаю, что в более старых версиях C вы не могли объявить анонимную структуру, и поэтому вам нужно было поместить туда имя "заполнителя".

Я верю, что это делается для того, чтобы создать непрозрачный тип.Это ограничивает доступ клиентов данного типа к внутренним сведениям без использования предоставленного интерфейса.Затем вы можете использовать структуру через непрозрачный указатель, и может объявлять массивы, переменные и т.д. типа, не беспокоясь о внутренней реализации, гарантируя, что программное обеспечение не потребуется перекомпилировать, если Apple решит изменить код, лежащий в основе таких типов.

Для объявления структур используется стиль объявления typedef struct _name {...} name восходит ко временам GCC 2.0 или около того, когда, как было упомянуто выше, у вас не могло быть анонимной структуры.

Для имен ivar единственное начальное подчеркивание является внутренним соглашением Apple о кодировании, и, официально говоря, Apple резервирует все имена, начинающиеся с одинарного подчеркивания.Если Apple назовет все свои ivar таким образом, то вы не столкнетесь ни с одним из их имен, если не будете этого делать.

К сожалению, многие примеры проектов с кодом были опубликованы на веб-сайте разработчика Apple без ознакомления с кодом и удаления начальных подчеркиваний в именах ivar.Это происходит по двум причинам, главная из которых заключается в том, что разработчики, работающие внутри Apple, имеют привычку называть свои переменные именно так, а другая причина заключается в том, что люди, просматривающие примеры проектов с кодом, на самом деле не очень заботились о применении стандартного стиля кодирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top