Słabe odniesienia wewnątrz bloku
UżywamNSOperationQueue
i w kolejceNSOperationBlocks
. Teraz bloki mają silne odniesienie do dowolnych instancji w bloku, a obiekt wywołujący ma również silny blok w bloku, więc zaleca się wykonanie czegoś takiego:
__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];
Moje pytanie brzmi, powiedzmy, że do czasu zakończenia renderowania obrazu i powrotu liniiCell
obiekt już nie istnieje (został zwolniony, prawdopodobnie z powodu ponownego użycia komórek, co jest trudne do sformalizowania). Kiedy idę do dostępu[weakSelf setImageViewImage:]
, czy to spowodujeEXC_BAD_ACCESS
błąd?
Obecnie próbuję prześledzić przyczynę mojego problemu i myślę, że może to mieć coś wspólnego z tym.