如何覆盖“合成 getter”?

如何覆盖属性合成 getter?

37480 次浏览

只需手动实现该方法,例如:

- (BOOL)myBoolProperty
{
// do something else
...
return myBoolProperty;
}

然后,编译器将不生成 getter 方法。

只要实现自己的 getter,编译器就不会生成,setter 也是一样。

例如:

@property float value;

等同于:

- (float)value;
- (void)setValue:(float)newValue;

在属性定义内部,您可以按如下方式指定 getter 和 setter 方法:

@property (nonatomic, retain, getter = getterMethodName, setter = setterMethodName) NSString *someString;

您可以只指定 getter、 setter 或者两者都指定。

我只想补充一点,我无法用 getter/setter 覆盖 BOOL 属性,直到我添加以下内容:

@synthesize myBoolProperty = _myBoolProperty;

所以完整的代码是:

头文件:

@property  BOOL myBoolProperty;

实施档案:

@synthesize myBoolProperty = _myBoolProperty;




-(void)setMyBoolProperty:(BOOL) myBoolPropertyNewValue
{
_myBoolProperty = myBoolPropertyNewValue;
}


-(BOOL) myBoolProperty
{
return _myBoolProperty;
}