В одном из самых крупных проектов, которые я использовал авто синтезированный свойства везде:преобразования в автоматический подсчет ссылок (ARC): «Использование необъявленный идентификатор» ошибки
//MyClass.h file:
@interface MyClass : NSObject
@property (nonatomic, retain) NSString *deviceName;
@property (nonatomic, retain) NSString *deviceID;
@end
//MyClass.m file:
#import "MyClass.h"
@implementation ApplicationStatus
// no @synthesize used at all.
-(void)dealloc{
[_deviceName release]; // gives errors only while converting to ARC with LLVM 5.0
[_deviceID release];
[super dealloc];
}
@end
Код выше компилируется хорошо в не-ARC а также в старых версиях Xcode во время процесса преобразования ARC. При попытке преобразовать в использовании новейшего LLVM 5.0 компилятора (новейший Xcode) это дает мне миллионы ошибок:
Что является причиной этого? Нужно ли вручную вручную создавать сотни переменных экземпляра и @synthesize вручную? Не будет ли это отступлением от философии «писать меньше кода», которую Apple рекламирует на всех WWDC?
Вам вообще не повезло с этой проблемой? Я испытываю то же самое. пока я вижу два варианта: обработайте ошибку как ошибку в инструменте миграции и просто исправьте их все, запустите миграцию, а затем отмените исправления. В качестве альтернативы вы можете использовать Xcode4 для запуска миграции? – nss
Мне пришлось вручную @synthesize все свойства. Я предполагаю, что это не ошибка. Может быть, ARC просто более строг в отношении отношения свойств - экземпляра. – Lukasz
Я думаю, что это ошибка. Мне пришлось изменить все свои ссылки на _var на self.var - но это упало со всеми моими переопределенными геттерами и сеттерами. Если бы какая-то удача переместила объявления @property в общественное пространство. Тем не менее, он все еще борется с этим. –