当我有一个getter方法时,Setter方法给出下划线错误

And*_*rew -1 iphone getter setter objective-c ios

我经常使用二传手.这是我对此的代码:

.H:

@property (nonatomic, strong) NSDate *lastSyncDate;
Run Code Online (Sandbox Code Playgroud)

.M:

-(void)setLastSyncDate:(NSDate *)lastSyncDate {
    _lastSyncDate = lastSyncDate;

    //Do something
}
Run Code Online (Sandbox Code Playgroud)

然后我输入了一个getter方法:

-(NSDate *)lastSyncDate {
    //Something happens
    return lastSyncDate;
}
Run Code Online (Sandbox Code Playgroud)

然后_lastSyncDate标识符发出unidentified identifier错误.

我不确定为什么会这样?

Mar*_*n R 5

它应该是

return _lastSyncDate;
Run Code Online (Sandbox Code Playgroud)

在getter方法中.默认情况下,合成的实例变量具有前导下划线(您已在setter方法中使用它).

此外,如果同时提供setter和getter方法,则必须显式合成该属性:

@synthesize lastSyncDate = _lastSyncDate;
Run Code Online (Sandbox Code Playgroud)

如果为只读属性提供getter,也会发生同样的情况.仅当缺少必需的访问器方法时,才由编译器合成该属性.