为了账号安全,请及时绑定邮箱和手机立即绑定

为什么对实例变量使用下划线,而不对实例属性使用下划线?

为什么对实例变量使用下划线,而不对实例属性使用下划线?

iOS
炎炎设计 2019-11-03 04:04:49
我是iphone开发的新手。我正在研究iphone中的语音记录。我从Apple下载了“ Speak here”示例程序。该程序包含LevelMeter.h文件,其中 @interface LevelMeter : UIView {CGFloat                     _level, _peakLevel;   }该属性设置为 @property                      CGFloat level; @property                      CGFloat peakLevel;声明_level之类的变量并将其属性设置为level有什么用。请解释一下。谢谢。
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

提醒

该@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; }



查看完整回答
反对 回复 2019-11-04
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

下划线表示只能从其自己的类内部访问的内容。因此,不应从类外部访问实例变量,而可以从属性外部访问实例变量。


查看完整回答
反对 回复 2019-11-04
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

在ivar中添加下划线的原因只是为了使ivar和代码中的属性之间的区别更加清晰。苹果似乎广泛使用了这种样式。您不必自己编写访问器方法:@synthesize level = _level;会在两者之间建立自动连接。

查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 315 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信