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 использовать автоматический синтез свойств с использованием символа подчеркивания?
Ответы
Ответ 1
Сначала я подумал, что это ошибка в бета-версии, но сегодня я увидел, что подобные ошибки возникают и на XCode 6 GM Seed, хотя я еще не обнаружил, в каких случаях.
Во всяком случае, исправление заключается в том, чтобы добавить оператор synhesize в блок @implementation, явно объявляя имя ivar, а также свойство:
@synthesize property = _property
Ответ 2
pod update
то теперь вы можете обновить до 3.7.1, исправляя эту ошибку.
Ответ 3
Если у вас есть явный getter, автоматическое свойство, синтезированное, будет проигнорировано.
Затем вы должны использовать @synthesize property = _property