Maison > Questions et réponses > le corps du texte
代码举个例子,我不知道自己的理解对不对。
[self.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.otherView.mas_centerY);
}];
block中持有了self,但是self.view并没有持有这个block,因为看到Masonry的源码是这样的:
- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
block(constraintMaker);
return [constraintMaker install];
}
它仅仅是block(constrainMaker)。如果改成了self.block = block(constrainMaker),那么view是不是也持有了block呢
我想大声告诉你2017-05-02 09:32:40
Il n'est pas vrai que le bloc provoquera certainement une référence circulaire. Le fait qu'il s'agisse d'une référence circulaire dépend du fait qu'ils contiennent de fortes références les uns aux autres. Si self est utilisé dans un bloc, le bloc gardera une référence à self, mais self ne détient pas le bloc directement ou indirectement, donc il ne provoquera pas de référence circulaire.
Votre compréhension est correcte.