在这个问题中,我询问了以下代码和保留周期:
__weak Cell *weakSelf = self;
NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
UIImage *image = /* render some image */
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[weakSelf setImageViewImage:image];
}];
}];
[self.renderQueue addOperation:op];
所有答案都表明这里没有必要使用弱引用,因为此代码不会导致保留周期。但是,在尝试更多代码时,以下确实会导致保留周期(如果我不使用弱引用,则不会释放当前视图控制器)
//__weak ViewController *weakSelf = self;
MBItem *close = [[MBItem alloc] initWithBlock:^{
[self dismissModalWithDefaultAnimation:NO];
}];
NSMutableArray *items = [[NSMutableArray alloc] initWithObjects:close, nil];
[self.childObject setItems:items];
为什么第二个会导致保留周期而不是第一个?