Diferença entre acessar métodos de propriedade e campos de classe (Objective-C)

Suponha que eu tenha este pedaço de código:

@interface Foo : NSObject {
    Bar *bar;
}

@property (retain, nonatomic) Bar *bar;

@end

Ao usar este campo / propriedade, existe alguma diferença entre as linhas:

[self.bar doStuff];

e

[bar doStuff];

?

Ao fazer a atribuição, o método de propriedade executará a retenção correta, mas e o acesso de leitura à propriedade, conforme descrito acima? Existe alguma diferença?

questionAnswers(4)

yourAnswerToTheQuestion