Использование свойства BOOL

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

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

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

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

@property (nonatomic, assign) BOOL working;

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

Спасибо!

103 голоса | спросил Patrick 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 18:11:15 +0300000000pmTue, 01 Feb 2011 18:11:15 +030011 2011, 18:11:15

3 ответа


0

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
ответил BoltClock 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 18:19:27 +0300000000pmTue, 01 Feb 2011 18:19:27 +030011 2011, 18:19:27
0

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

@property (nonatomic,assign) BOOL working;

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

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

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

ответил Hariprasad.J 16 TueEurope/Moscow2014-12-16T09:06:36+03:00Europe/Moscow12bEurope/MoscowTue, 16 Dec 2014 09:06:36 +0300 2014, 09:06:36
0

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

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

ответил Thomson Comer 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 19:27:43 +0300000000pmTue, 01 Feb 2011 19:27:43 +030011 2011, 19:27:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132