我目前正在考虑在使用保留自身的块时如何防止强引用循环。通常的方法似乎是只使用对 self 的弱引用:
@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 的弱引用的强引用吗?)