Maison > Questions et réponses > le corps du texte
Le code est un exemple. Je ne sais pas si ma compréhension est correcte.
[self.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.otherView.mas_centerY);
}];
Le bloc contient self, mais self.view ne contient pas ce bloc, car le code source de Masonry est le suivant :
- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
block(constraintMaker);
return [constraintMaker install];
}
C'est juste un bloc (constrainMaker). S'il est remplacé par self.block = block(constrainMaker), la vue contient-elle également le bloc
?我想大声告诉你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.