我是iphone开发的新手。我正在研究iphone中的语音记录。我从Apple下载了“ Speak here”示例程序。该程序包含LevelMeter.h文件,其中 @interface LevelMeter : UIView {CGFloat _level, _peakLevel; }该属性设置为 @property CGFloat level; @property CGFloat peakLevel;声明_level之类的变量并将其属性设置为level有什么用。请解释一下。谢谢。
3 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
提醒
该@property指令等效于声明一个setter和一个getter。对于level,
@property CGFloat level;
可以替换为
- (CGFloat)level;
- (void)setLevel:(CGFloat)v;
你的问题
为什么要level为一个名为的变量声明一个名为属性的属性,_level以及为什么要首先使用一个开头来命名变量_?我不知道。
如何运作,在回答LevelMeter.m:
- (CGFloat)level { return _level; }
- (void)setLevel:(CGFloat)v { _level = v; }
慕哥9229398
TA贡献1877条经验 获得超6个赞
在ivar中添加下划线的原因只是为了使ivar和代码中的属性之间的区别更加清晰。苹果似乎广泛使用了这种样式。您不必自己编写访问器方法:@synthesize level = _level;
会在两者之间建立自动连接。
- 3 回答
- 0 关注
- 538 浏览
添加回答
举报
0/150
提交
取消