• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > (swift)关于Masonry为什么不会造成循环引用的问题

(swift)关于Masonry为什么不会造成循环引用的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了masonry,masonry是什么意思,ios masonry,masonry unit,masonry.js等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: (swift)关于Masonry为什么不会造成循环引用的问题
描述:

代码举个例子,我不知道自己的理解对不对。

[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,所以不会造成循环引用。

你的理解是对的。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 制作的framework项目含masonry,如何处理避免冲突
  • Masonry循环创建一竖列button如何实现
  • oc如何获得用Masonry约束好的宽度?
  • (swift)关于Masonry为什么不会造成循环引用的问题
  • iOS开发,使用masonry布局,如何让控件动态调整布局???e
  • iphone使用Masonry之后,如何检查自己的Autolayout布局是否正确?
  • iOS开发中-->关于使用Masonry去自适应ScrollView滚动视图内容的一些疑问!!!
  • 关于Masonry框架AutoLayout的用法--面向初学者
  • iOS开发使用Masonry布局如何让父视图的高度随着子视图的变化而变化?

相关文章

  • 2017-06-05 为什么我创建的真实文件夹在Xcode拖动已有的文件只是让该文件夹引用了文件并没有真的把文件拖到文件夹
  • 2017-06-05 支付验证签名支付失败?——微信支付的app支付
  • 2017-06-05 如何利用闹钟做一个提醒功能
  • 2017-06-05 关键帧动画瞬间被执行完了?
  • 2017-06-05 iOS开发真机调试和安装咨询
  • 2017-06-05 iOShealthkit获取当天数据少八小时的问题
  • 2017-06-05 下载了最新的XCode8但是打包上传项目不出构建版本
  • 2017-06-05 iOS基础控件ios视频流问题
  • 2017-06-05 iOS开发,一个label里有数字有汉字,怎样让数字的font比汉字大
  • 2017-06-05 Objective-C内存管理面试题一道

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于感情问题关于swift30的类目问题
    • 报错Can'tfindinterfacedeclarationfor"UINavigationBar"
    • 自定义了一个导航控制器当父类用,然后视图控制器上定义当barbuttonitem就看不见了。
    • Xcode8的instruments无法定位到代码,全是内存地址
    • iOS上传文件iOS客户端怎么使用七牛上传图片
    • 支付宝钱包和支付宝有什么区别iOS支付宝sdk问题
    • (swift)ios自定义按钮报NSInvalidArgumentException异常
    • Xcode的快捷键?就是弄出下面视图显示的快捷键
    • 运行swift代码出错,是多个相同的错误,请见图。
    • ios应用推广ios开发应用内部如何获取周边wifi列表信息

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有