Why do you use an underscore for an instance varia

2020-01-23 04:44发布

Possible Duplicate:
How does an underscore in front of a variable in a cocoa objective-c class work?

I am new to iphone development.I am doing research on voice recording in iphone .I have downloaded the "speak here" sample program from Apple.It consist of LevelMeter.h file, in which

 @interface LevelMeter : UIView {

CGFloat                     _level, _peakLevel;

   }

The property are set as

 @property                      CGFloat level;
 @property                      CGFloat peakLevel;

What is the use of declaring a varible like _level and setting its property as level.Please explain me.Thanks.

2条回答
看我几分像从前
2楼-- · 2020-01-23 04:54

The underscore represents stuff that should only be accessed from within its own class. Thus, the instance variable shouldn't be accessed from outside the class, but the property can be.

查看更多
三岁会撩人
3楼-- · 2020-01-23 05:17

Reminder

The @property directive is equivalent to declaring both a setter and a getter. In the case of level,

@property CGFloat level;

can be replaced by

- (CGFloat)level;
- (void)setLevel:(CGFloat)v;

Your question

Why declare a property named level for a variable named _level and why name a variable with a leading _ in the first place? I don't know.

How it works, is answered in LevelMeter.m:

- (CGFloat)level { return _level; }
- (void)setLevel:(CGFloat)v { _level = v; }
查看更多
登录 后发表回答