我正在使用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
错误吗?
目前我正在尝试追踪我的问题的原因是什么,我认为这可能与此有关。