佚名通过本文主要向大家介绍了masonry,masonry是什么意思,ios masonry,masonry unit,masonry.js等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: (swift)关于Masonry为什么不会造成循环引用的问题
描述:
解决方案1:
描述:
代码举个例子,我不知道自己的理解对不对。
[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呢
解决方案1:
并不是 block 就一定会造成循环引用,是不是循环引用要看是不是相互持有强引用。block 里用到了 self,那 block 会保持一个 self 的引用,但是 self 并没有直接或者间接持有 block,所以不会造成循环引用。
你的理解是对的。
您可能想查找下面的文章:
- 制作的framework项目含masonry,如何处理避免冲突
- Masonry循环创建一竖列button如何实现
- oc如何获得用Masonry约束好的宽度?
- (swift)关于Masonry为什么不会造成循环引用的问题
- iOS开发,使用masonry布局,如何让控件动态调整布局???e
- iphone使用Masonry之后,如何检查自己的Autolayout布局是否正确?
- iOS开发中-->关于使用Masonry去自适应ScrollView滚动视图内容的一些疑问!!!
- 关于Masonry框架AutoLayout的用法--面向初学者
- iOS开发使用Masonry布局如何让父视图的高度随着子视图的变化而变化?