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?