xCode 6, как исправить "использование необъявленного идентификатора" для автоматического синтеза свойств?
Я использую xCode6 Beta 3 и столкнулся с проблемой, из-за которой код, ранее скомпилированный нормально (xCode 5.1.1 или xCode6 beta 2), неожиданно начал давать мне ошибки "Использование необъявленного идентификатора" при доступе к автоматически синтезированной переменной экземпляра.:
- (void)setFinished:(BOOL)finished {
[self willChangeValueForKey:@"isFinished"];
_finished = finished;
[self didChangeValueForKey:@"isFinished"];
}
//ERROR:
Use of undeclared identifier '_finished'; did you mean 'finished'?
Добавление @synthesize finished = _finished;
устраняет ошибку, но есть ли способ заставить xCode6 Beta 3 использовать автоматический синтез свойств с использованием символов подчеркивания?
3 ответа
Сначала я думал, что это ошибка бета-версии, но сегодня я увидел, что ошибки такого типа встречаются и на семействе XCode 6 GM, хотя я еще не выяснил, в каких именно случаях.
В любом случае, исправление состоит в том, чтобы добавить оператор синтеза в блок @implementation, явно объявив имя ivar, а также свойство:
@synthesize property = _property
Если у вас есть явный метод получения, автоматически синтезированные свойства будут игнорироваться.
Тогда вы должны использовать @synthesize property = _property
Обновление стручка
Теперь вы можете обновить до 3.7.1, которая исправила эту ошибку.