Подтвердить что ты не робот

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 использовать автоматический синтез свойств с использованием символа подчеркивания?

4b9b3361

Ответ 1

Сначала я подумал, что это ошибка в бета-версии, но сегодня я увидел, что подобные ошибки возникают и на XCode 6 GM Seed, хотя я еще не обнаружил, в каких случаях.

Во всяком случае, исправление заключается в том, чтобы добавить оператор synhesize в блок @implementation, явно объявляя имя ivar, а также свойство:

@synthesize property = _property

Ответ 2

pod update

то теперь вы можете обновить до 3.7.1, исправляя эту ошибку.

Ответ 3

Если у вас есть явный getter, автоматическое свойство, синтезированное, будет проигнорировано.

Затем вы должны использовать @synthesize property = _property