Por que você usa um sublinhado para uma variável de instância, mas não sua propriedade correspondente?

Duplicar Possível:
Como um sublinhado na frente de uma variável em uma class de cacau objective-c funciona?

Eu sou novo no desenvolvimento iphone.Estou fazendo pesquisa sobre gravação de voz no iphone.Eu fiz o download do programa de exemplo “falar aqui” da Apple.Ele consistem em arquivo LevelMeter.h, em que

@interface LevelMeter : UIView { CGFloat _level, _peakLevel; } 

A propriedade está definida como

  @property CGFloat level; @property CGFloat peakLevel; 

Qual é o uso de declarar uma variável como _level e definir sua propriedade como level.Please me explicar.Obrigado.

Lembrete

A diretiva @property é equivalente a declarar um setter e um getter. No caso de level ,

 @property CGFloat level; 

pode ser substituído por

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

Sua pergunta

Por que declarar uma propriedade denominada level para uma variável chamada _level e por que nomear uma variável com um _ leading em primeiro lugar? Eu não sei.

Como funciona, é respondido em LevelMeter.m :

 - (CGFloat)level { return _level; } - (void)setLevel:(CGFloat)v { _level = v; } 

O sublinhado representa coisas que só devem ser acessadas de dentro de sua própria class. Assim, a variável de instância não deve ser acessada de fora da class, mas a propriedade pode ser.