objektif-c - Soalan tentang mengapa Masonry tidak menyebabkan rujukan bulat
高洛峰
高洛峰 2017-05-02 09:30:40
0
1
676

Kod adalah contoh saya tidak tahu sama ada pemahaman saya betul.

[self.view mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(self.otherView.mas_centerY);
}];

Blok memegang diri, tetapi self.view tidak memegang blok ini, kerana kod sumber Masonry adalah seperti berikut:

- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
    self.translatesAutoresizingMaskIntoConstraints = NO;
    MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
    block(constraintMaker);
    return [constraintMaker install];
}

Ia hanya blok(constrainMaker). Jika ia ditukar kepada self.block = block(constrainMaker), adakah paparan itu juga memegang blok

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(1)
我想大声告诉你

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan