Использование свойства BOOL - PullRequest
107 голосов
/ 01 февраля 2011

Apple рекомендует объявить свойство BOOL следующим образом:

@property (nonatomic, assign, getter=isWorking) BOOL working;

Поскольку я использую свойства Objective-C 2.0 и точечную запись, я обращаюсь к этому свойству, используя self.working.Я знаю, что мог бы также использовать [self isWorking] - но мне не нужно.

Итак, поскольку я везде использую точечную запись, зачем мне определять дополнительное свойство?Было бы хорошо просто написать

@property (nonatomic, assign) BOOL working;

Или у меня есть какие-либо преимущества, написав getter=isWorking в моем случае (использование точечной записи)?

Спасибо!

Ответы [ 3 ]

197 голосов
/ 01 февраля 2011

Apple просто рекомендует объявлять isX геттер для стилистических целей.Неважно, настраиваете ли вы имя получателя или нет, если вы используете точечную запись или запись сообщения с правильным именем.Если вы собираетесь использовать точечную запись, это не имеет значения, вы все равно получите доступ к ней по имени свойства:

@property (nonatomic, assign) BOOL working;

[self setWorking:YES];         // Or self.working = YES;
BOOL working = [self working]; // Or = self.working;

или

@property (nonatomic, assign, getter=isWorking) BOOL working;

[self setWorking:YES];           // Or self.working = YES;, same as above
BOOL working = [self isWorking]; // Or = self.working;, also same as above
4 голосов
/ 16 декабря 2014

Apple рекомендует для стилистических целей. Если вы пишете этот код:

@property (nonatomic,assign) BOOL working;

Тогда вы не можете использовать [объект isWorking].
Это покажет ошибку. Но если вы используете приведенный ниже код, значит

@property (assign,getter=isWorking) BOOL working;

Таким образом, вы можете использовать [объект isWorking].

0 голосов
/ 01 февраля 2011

Нет смысла использовать свойства с примитивными типами.@property используется с выделенной кучей NSObjects, например NSString*, NSNumber*, UIButton* и т. Д., Поскольку средства доступа, управляемые из памяти, создаются бесплатно.При создании BOOL значение всегда выделяется в стеке и не требует специальных средств доступа для предотвращения утечки памяти.isWorking - это просто популярный способ выражения состояния логического значения.

В другом языке OO вы можете создать переменную private bool working; и два метода доступа: SetWorking для установщика и IsWorking дляаксессор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...