问题
I'm using xCode6 Beta 3, and am running into an issue where a code which previously compiled fine (xCode 5.1.1 or xCode6 beta 2) suddenly started to give me "Use of undeclared identifier" errors when accessing an automatically synthesized instance variable:
- (void)setFinished:(BOOL)finished {
[self willChangeValueForKey:@"isFinished"];
_finished = finished;
[self didChangeValueForKey:@"isFinished"];
}
//ERROR:
Use of undeclared identifier '_finished'; did you mean 'finished'?
Adding @synthesize finished = _finished;
makes the error go away, but is there a way to force xCode6 Beta 3 to use automatic property synthesis using underscore notation?
回答1:
At first I thought it was a beta version bug, but today I saw that this type of errors occur on the XCode 6 GM Seed also, though I'm yet to discover in which particular cases.
Anyway, the fix is to add a synthesize statement in the @implementation block, explicitly declaring the name of the ivar as well as the property:
@synthesize property = _property
回答2:
If you have an explicit getter, automatic property synthesized will be ignored.
Then you have to use @synthesize property = _property
回答3:
pod update
then your can now update to 3.7.1 that has fixed this bug.
来源:https://stackoverflow.com/questions/24638826/xcode-6-how-to-fix-use-of-undeclared-identifier-for-automatic-property-synthes