Schwache Referenzen innerhalb eines Blocks
Ich benutze eineNSOperationQueue
und Schlange stehenNSOperationBlocks
. Jetzt haben Blöcke einen starken Bezug zu allen Instanzen im Block, und das aufrufende Objekt hat auch einen starken Einfluss auf den Block. Es wurde daher empfohlen, Folgendes zu tun:
__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];
Meine Frage lautet also: Wenn das Rendern des Bildes abgeschlossen ist und diese Linie zurückkehrt, wird dieCell
Objekt existiert nicht mehr (es wurde freigegeben, möglicherweise aufgrund der Wiederverwendung von Zellen, die etwas schwierig zu formalisieren ist). Wenn ich zum Zugang gehe[weakSelf setImageViewImage:]
, wird das a verursachenEXC_BAD_ACCESS
Error?
Derzeit versuche ich, die Ursache meines Problems zu ermitteln, und denke, dass dies möglicherweise etwas damit zu tun hat.