如何覆盖属性合成 getter?
只需手动实现该方法,例如:
- (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; }