Почему у иваров класса Какао-Тач символ подчеркивания? - PullRequest
2 голосов
/ 23 августа 2010

Есть ли какая-то цель для этого соглашения?

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Есть некоторые разработчики, которые используют следующее соглашение «скрывать» свои ивары следующим способом:

@interface

@private
NSString *_myString
@property (nonatomic, retain) NSString *myString;

@implementation
@synthesize myString = _myString.

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

0 голосов
/ 23 августа 2010

Apple любит использовать подчеркивания для обозначения «частный», в соответствии с Руководством по кодированию для какао :

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

Имена методов, начинающиеся с подчеркиваний, зарезервированы в соответствии с Язык программирования Objective-C (которыйозначает, что они зарезервированы, даже если вы не используете Какао (предположительно):

Имена методов, начинающиеся с «_», одного символа подчеркивания, зарезервированы для использования Apple.

Кроме того, соглашение C / C ++ гласит, что ведущие подчеркивания (часто) зарезервированы для реализации.Многие люди неверно истолковывают это и используют _ для чего-то «частного»;Это приводит к распространению вызовов _FooLog () в большой части нашей кодовой базы, даже если это вызывает неопределенное поведение.

Единственная причина сделать это - препятствовать прямому доступу к ivar в вашем собственном классе.Запретить доступ к ivar из других классов с помощью @private.

...