可能重复:
How does an underscore in front of a variable in a cocoa objective-c class work?
我是iphone开发的新手。我正在研究iphone中的录音。我已经从Apple下载了“speak here”示例程序。它包含LevelMeter.h文件,其中
@interface LevelMeter : UIView {
CGFloat _level, _peakLevel;
}
该属性设置为
@property CGFloat level;
@property CGFloat peakLevel;
声明像_level这样的变量并将其属性设置为level是什么用。请解释一下。谢谢。
答案 0 :(得分:1)
@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; }
答案 1 :(得分:0)
下划线表示只能从其自己的类中访问的内容。因此,不应该从类外部访问实例变量,但属性可以是。