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

我是iphone开发的新手。我正在研究iphone中的语音记录。我从Apple下载了“ Speak here”示例程序。该程序包含LevelMeter.h文件,其中


 @interface LevelMeter : UIView {


CGFloat                     _level, _peakLevel;


   }

该属性设置为


 @property                      CGFloat level;

 @property                      CGFloat peakLevel;

声明_level之类的变量并将其属性设置为level有什么用。请解释一下。谢谢。


炎炎设计
浏览 320回答 3
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; }

米琪卡哇伊

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

慕的地6264312

在ivar中添加下划线的原因只是为了使ivar和代码中的属性之间的区别更加清晰。苹果似乎广泛使用了这种样式。您不必自己编写访问器方法:@synthesize level = _level;会在两者之间建立自动连接。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS