Rumah > Soal Jawab > teks badan
代码举个例子,我不知道自己的理解对不对。
[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
Adalah tidak benar bahawa blok pasti akan menyebabkan rujukan bulatan sama ada ia adalah rujukan bulat bergantung kepada sama ada mereka memegang rujukan yang kukuh antara satu sama lain. Jika diri digunakan dalam blok, blok akan menyimpan rujukan kepada diri sendiri, tetapi diri tidak memegang blok secara langsung atau tidak langsung, jadi ia tidak akan menyebabkan rujukan bulat.
Pemahaman anda betul.