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, которая исправила эту ошибку.

Другие вопросы по тегам