Diferença entre _property e self.property

Estou um pouco confuso quanto às convenções adequadas ao lidar com propriedades. Ilustrarei minha pergunta através de um exemplo. Então, a partir do exemplo abaixo, eu sei que funcionalmente "self.loan = self.loan + 250.00;" é o mesmo que "_loan = _loan + 250.00;" ou não é? Eu vejo inúmeros tutoriais em toda a web que podem ou não usar os dois métodos para acessar uma propriedade. Então, qual é exatamente a diferença entre usar _loan e self.loan (eu sei que self.loan é o mesmo que [self setLoan:])

//ClassA.h
@interface ClassA: UIViewController
@property double loan;
@end

//ClassA.m
@implementation ClassA
@synthesize loan = _loan;

-(void)doSomething{
  self.loan = self.loan + 250.00; //Exhibit A
  _loan = _loan + 250.00; // Exhibit B 
} 

questionAnswers(3)

yourAnswerToTheQuestion