閱讀別人含有block的代碼時常常會看到這樣一個現象:io
__weak __typeof(self)weakSelf = self;
self.completionBlock = ^{
__strong __typeof(weakSelf)strongSelf = weakSelf;
};table
解釋一下:循環
weakSelf是爲了block不持有self,避免循環引用,而再聲明一個strongSelf是由於一旦進入block執行,就不容許self在這個執行過程當中釋放。block執行完後這個strongSelf會自動釋放,沒有循環引用問題。 |