自分自身を保持するブロックを使用する際に、強い参照循環を防ぐ方法を現在考えています。通常の方法は、自己への弱い参照を使用することです。
@property (strong, nonatomic) NSOperationQueue *queue;
- (void)methodA {
__weak id *weakSelf = self;
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
[weakSelf methodB];
}];
[self.queue addOperation:operation];
}
しかし、methodB が次のようになったらどうなるでしょうか。
- (void)methodB {
[self someOtherMethod];
}
これは依然として強い参照サイクルを引き起こしますか? それとも、methodB は methodA から self への弱い参照を self への参照として受け取りますか? (つまり、methodB の self への参照は、methodA からの弱参照への単なる強参照ですか?)