經過[block copy]
並執行block();
,我應該設置block=nil
?或者ARC已經爲我管理這個,所以我不需要做任何事情? 我對ARC在這裏如何管理塊引用有點困惑,我不確定將塊設置爲零會破壞什麼或不是?我應該將塊引用設置爲nil AFTER執行嗎?
我有這樣的事情。有什麼想法嗎?
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???
}
如此,你的意思是設置集團在操作結束時k變量'nil'將有助於**解除分配塊,並且其保留的'self'也將被解除分配。 – Hlung
@Hlung:好的,當一個堆塊被釋放時,它釋放它保留的捕獲變量 – newacct