如何覆盖属性合成的getter?
答案 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;
}