[block copy]
実行後、block();
設定すればいいのblock=nil
?それとも、ARC が既にこれを管理してくれるので、何もする必要はありませんか? ここでARCがブロック参照を管理する方法について少し混乱しています。ブロックをnilに設定すると何かが壊れるかどうかわかりませんか?
私はこのようなものを持っています。何かご意見は?
typedef void (^C3Block)(void); // declare block, no return, no args
// set flag to get _previewImage, then call the block
- (void)takePreviewImageFromBufferWithBlock:(C3Block)block {
_takePreviewImageBlock = [block copy]; // save block ref for calling later
_shouldTakePreviewImageFromBuffer = YES;
}
- (void)gotPreviewImageFromBuffer {
_takePreviewImageBlock(); // calls the block
_takePreviewImageBlock = nil; // <---- should I do this???
}