In this questionを保持、私は次のコードについて尋ねたとサイクルを保持:弱ブロック内の参照およびサイクル
__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];
なぜだろう第二つの結果で保持サイクルだが、最初のサイクルではない?
キーワードは「Retain CYCLE」です。で、私はあなたを保持し、あなたは私を保持するので、誰が最初に行くことができますか? –