Я использую NSOperationQueue
и размещаюсь в очереди NSOperationBlocks
. Теперь блоки имеют сильную ссылку на любые экземпляры в блоке, а вызывающий объект также сильно удерживает блок, поэтому было рекомендовано сделать что-то вроде следующего:
__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];
Итак, на мой вопрос, скажем, что к тому времени, когда изображение закончит рендеринг и эта строка вернется, объект Cell
больше не существует (он был освобожден, возможно, из-за повторного использования соты, что немного сложно формализовать). Когда я перейду к доступу [weakSelf setImageViewImage:]
, это приведет к ошибке EXC_BAD_ACCESS
?
В настоящее время я пытаюсь выяснить причину моей проблемы, и я думаю, что это может быть связано с этим.