不使用getter和setter的属性

Fog*_*ter 13 properties ios

我已经定义了一个属性......

@property (nonatomic, strong) NSArray *eventTypes;
Run Code Online (Sandbox Code Playgroud)

我想覆盖getter和setter ......

我写了这个......

- (void)setEventTypes:(NSArray *)eventTypes
{
    _eventTypes = eventTypes;

    //do some stuff here.
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但当我然后添加这个...

- (NSArray*)eventTypes
{
    //do some stuff here.

    return _eventTypes;
}
Run Code Online (Sandbox Code Playgroud)

然后这两个函数都显示错误,并且不知道_eventTypes是什么.

这两种方式都是一样的.它适用于一个功能,但只要我添加另一个功能,它就会失败.

还有什么我需要做的吗?似乎很奇怪,它可以与任何一个机器人一起工

All*_*ian 20

虽然LLVM会自动合成支持ivar(默认情况下以下划线为前缀),但如果同时实现getter和setter方法,则无法获得自动合成的ivar,这就是您必须@synthesize eventTypes = _eventTypes;手动操作的原因.

你可以在这里阅读更多内容:http://useyourloaf.com/blog/2012/08/01/property-synthesis-with-xcode-4-dot-4.html