xCode 6如何修复"使用未声明的标识符"进行自动属性合成?

Ale*_*one 40 compiler-errors automatic-properties ios xcode6

我正在使用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'?
Run Code Online (Sandbox Code Playgroud)

添加@synthesize finished = _finished;使错误消失,但有没有办法强制xCode6 Beta 3使用下划线表示法使用自动属性合成?

Şaf*_*zer 40

起初我以为这是一个beta版本的bug,但今天我看到这种类型的错误也出现在XCode 6 GM Seed上,尽管我还没有发现在哪些特定情况下.

无论如何,修复是在@implementation块中添加一个Synthesisize语句,明确声明ivar的名称以及属性:

@synthesize property = _property
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚遇到CocoaPods(SDWebImageDownloaderOperation)的问题,并添加了合成调用解决了一切!谢谢"drowntoge" (5认同)