Есть ли какая-то цель у этой конвенции?
Почему ивары класса Cocoa-Touch имеют ведущее подчеркивание?
Ответы (2)
Согласно Рекомендации по написанию кода для какао:
Избегайте использования символа подчеркивания в качестве префикса, означающего частный, особенно в методах. Apple оставляет за собой право использовать это соглашение. Использование третьими сторонами может привести к конфликтам пространства имен; они могут невольно заменить существующий частный метод собственным, что приведет к катастрофическим последствиям.
Имена методов, начинающиеся с подчеркивания, зарезервированы в соответствии с Язык программирования Objective-C (что означает, что они зарезервированы, даже если вы, предположительно, не используете Какао):
Имена методов, начинающиеся с символа подчеркивания «_», зарезервированы для использования Apple.
Кроме того, соглашение C / C ++ гласит, что начальные подчеркивания (часто) зарезервированы для реализации. Многие люди неверно истолковывают это и используют _ для чего-то «личного»; что приводит к увеличению количества вызовов _FooLog () в большой части нашей кодовой базы, даже несмотря на то, что он вызывает неопределенное поведение.
Единственная причина сделать это - препятствовать прямому доступу к ivar в вашем собственном классе. Запретить доступ к ivar из других классов с помощью @private
.
Некоторые разработчики используют следующее соглашение о «сокрытии» ivars следующим способом:
@interface
@private
NSString *_myString
@property (nonatomic, retain) NSString *myString;
@implementation
@synthesize myString = _myString.
при этом запрещается прямой доступ к ivar с принудительным доступом через свойство myString. Это способ скрыть внутреннюю часть вашего класса и соблюдать объектно-ориентированный принцип инкапсуляции.
_myString
.
- person Marcus S. Zarra; 23.08.2010
myString
и self.myString
.
- person Stefan Arentz; 23.08.2010