如何覆盖@synthesized getters?

时间:2011-02-18 22:49:41

标签: iphone objective-c ios

如何覆盖属性合成的getter?

4 个答案:

答案 0 :(得分:73)

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

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

编译器将不会生成getter方法。

答案 1 :(得分:54)

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

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

您可以仅指定getter,仅指定setter,或同时指定两者。

答案 2 :(得分:43)

只需实现自己的getter,编译器就不会生成一个。 setter也是如此。

例如:

@property float value;

相当于:

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

答案 3 :(得分:10)

我只想添加,我无法用getter / setter覆盖BOOL属性,直到我添加它:

@synthesize myBoolProperty = _myBoolProperty;

所以完整的代码是:

头文件中的

@property  BOOL myBoolProperty;

在实施文件中:

@synthesize myBoolProperty = _myBoolProperty;


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

-(BOOL) myBoolProperty
{
    return _myBoolProperty;
}