根據說明文件,在下面的代碼中,保留self
是用來保證在block調用時,圖片對象運行。但是,我不太明白,單單保存圖片就可以保證它不會消失,那麼為什麼還要保留self呢?
self.finishBlock = ^{
self.image.hidden = YES;
}
是不是在直接訪問圖片的時候適用的?
self.finishBlock = ^{
_image.hidden = YES;
}
block需要保留block中任何捕獲到的對象。你的第一個block例子就是:
self.finishBlock = ^{
[[self image] setHidden:YES];
}
block需要保留self,這樣才能正確調用方法,由於block不能單純的保留圖片,因為只有在block執行,圖片方法被調用時才能捕獲到圖片,所以唯一的辦法就是保留self。
所以在第二個block例子中:
self.finishBlock = ^{
self->_image.hidden = YES;
}
重申一遍,self必須保留,這樣block執行的時候,才能訪問_image ivar
正確的值