Diferencia entre _property y self.property

Estoy un poco confundido en cuanto a las convenciones adecuadas cuando se trata de propiedades. Ilustraré mi pregunta a través de un ejemplo. Entonces, a partir del siguiente ejemplo, sé que funcionalmente "self.loan = self.loan + 250.00;" es lo mismo que "_loan = _loan + 250.00;" o no lo es? Veo numerosos tutoriales en toda la web que pueden o no usar ambos métodos para acceder a una propiedad. Entonces, ¿cuál es exactamente la diferencia entre usar _loan y self.loan (sé que self.loan es lo mismo 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 
} 

Respuestas a la pregunta(3)

Su respuesta a la pregunta