La propiedad débil se establece en nulo en dealloc pero el ivar de la propiedad no es nulo

Noté lo siguiente en Objective-C con ARC habilitado:

Tengamos la clase A simple y la propiedad débil autosintetizada

@interface A
@property (nonatomic, weak) id refObject;
@end

@implementation A
@end

Y segunda clase B con dealloc implementado.

@interface B
@end

@implementation B
-(void) dealloc
{
    NSLog(@"In dealloc");
}
@end

Y finalmente, en algún lugar de la clase A tenemos lo siguiente:

@implementation A
...
-(void) foo
{
   B* b = [B new];
   self.refObject = b;
   // Just use b after the weak assignment
   // in order to not dealloc 'b' before assignement 
   NSLog(@"%@", b);
}
...
@end 

Si establezco un punto de interrupción en[B dealloc] e inspeccionar[A refObject] propiedad puedo ver quea.refObject es nulo peroa->_refObject no es nulo y apunta a 'b'

¿Alguna idea de por qué sucede eso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta