Why do you use an underscore for an instance variable, but not its corresponding property?

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

  • NSString Unicode display
  • Application Tests VS Logic Tests
  • UITableView with infite scrolling and lazy loading
  • UITableView - resign first responder on outside touch
  • Connecting actions works. Connecting outlets doesn't
  • numerical value of a unicode character in objective c
  •  @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 Solutions Collect From Internet About “Why do you use an underscore for an instance variable, but not its corresponding property?”

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

    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.