dam*_*ian 2 objective-c ios ios6
可能重复:
不使用getter和setter的属性
这是我面临的问题:我正在使用iOS 6.我在头文件中声明了一个属性:
@property (nonatomic) CGFloat scale;
Run Code Online (Sandbox Code Playgroud)
然后在实现中,我创建自己的getter/setter,如下所示:
#define DEFAULT_SCALE 0.90
- (void)setScale:(CGFloat)scale
{
if(_scale != scale) {
_scale = scale;
[self setNeedsDisplay];
}
}
- (CGFloat) scale
{
if(!_scale) {
return DEFAULT_SCALE;
} else {
return _scale;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是编译器无法识别_scale.我得到错误"使用未声明的标识符'_scale'.如果我删除了getter或setter,那么它工作正常,但我不能同时保留两者.如果我这样做,我必须添加@synthesize scale = _scale以避免错误.有人可以解释为什么?
谢谢
@interface如果您要使用自己的setter/getter ,则需要声明实例变量:
@interface MyClass : NSObject
{
CGFloat _scale;
}
...
@end
Run Code Online (Sandbox Code Playgroud)
编辑(OP问题后):
您的特定实现肯定会有所不同(它们不是简单的getter/setter方法,因为它们会起到副作用).但是我认为,如果你想要定位32位OSX,那么声明你的变量总是一个好主意,因为运行时不支持自动声明的实例变量.
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |