Referências fracas dentro de um bloco
Estou usando umNSOperationQueue
e fazendo filaNSOperationBlocks
. Agora, os blocos têm uma forte referência a quaisquer instâncias no bloco, e o objeto de chamada também tem um forte controle sobre o bloco, por isso foi aconselhado a fazer algo como o seguinte:
__weak Cell *weakSelf = self;
NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
UIImage *image = /* render some image */
/* what if by the time I get here self no longer exists? */
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[weakSelf setImageViewImage:image];
}];
}];
[self.renderQueue addOperation:op];
Então, minha pergunta é, digamos que quando a imagem terminar de renderizar e a linha voltar,Cell
objeto não existe mais (foi desalocado, possivelmente devido à reutilização de células, o que é um pouco difícil de formalizar). Quando eu vou acessar[weakSelf setImageViewImage:]
, isso causará umEXC_BAD_ACCESS
erro?
Atualmente, estou tentando descobrir qual é a causa do meu problema e estou pensando que talvez tenha algo a ver com isso.