Objetivo C – Propriedade Synthesize

Duplicar Possível:
Prefixando nomes de propriedades com um sublinhado no Objective C

Ao sintetizar propriedades descobri que alguém está fazendo:

@synthesize myVar = _myVar; 

o que é “_myVar” e qual é a diferença em simplesmente fazer:

 @synthesize myVar; 

Por fim, quando eu deveria preferir a primeira solução para o último?

Obrigado Luca

O que _myVar realmente está no seu exemplo, é o nome do ivar que está apoiando sua propriedade. Por padrão, quando você sintetiza uma propriedade, um ivar do mesmo nome é criado para você. Assim, você pode usar sua propriedade para definir seu ivar através de setter / getter ou o _myVar para acessar diretamente sua variável (ignorando KVC / KVO, é claro).

EDIT: De diretrizes de codificação da Apple para cacau

… Em muitos casos, quando você usa uma propriedade declarada, você também sintetiza uma variável de instância correspondente.

Certifique-se de que o nome da variável de instância descreva de forma concisa o atributo armazenado. Normalmente, você não deve acessar variables ​​de instância diretamente, em vez disso você deve usar methods de access (você acessa variables ​​de instância diretamente nos methods init e dealloc). Para ajudar a sinalizar isso, prefixar os nomes das variables ​​de instância com um sublinhado (_) …

Se você quiser usar algum membro de dados existente em setter e getter, então pode ser especificado assim.

Por exemplo, @synthesize personName = pName;

Por isso, podemos usar pName em vez de personName como por nossa conveniência.

É o nome da variável privada.

Se minha resposta em outro post: resposta