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
エラーが発生しますか?
現在、問題の原因を突き止めようとしていますが、これと関係があるのではないかと考えています。