A propriedade fraca é definida como nil no dealloc, mas a ivar da propriedade não é nula

Eu observei o seguinte em Objective-C com o ARC ativado:

Vamos ter classe simples A e propriedade fraca auto-sintetizada

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

@implementation A
@end

E segunda classe B com dealloc implementado

@interface B
@end

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

E finalmente, em algum lugar da classe A, temos o seguinte:

@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 

Se eu definir um ponto de interrupção[B dealloc] e inspecionar[A refObject] propriedade eu posso ver quea.refObject é nulo masa->_refObject não é nulo e aponta para 'b'

Alguma idéia porque isso acontece?

questionAnswers(1)

yourAnswerToTheQuestion