使用SnapKit编写约束时未用[weak self]是否会引发内存泄漏?
SnapKit约束闭包未用[weak self]是否会导致内存泄漏?
结论是:不会造成内存泄漏。
原因如下:
- SnapKit的
makeConstraints闭包属于立即执行型,约束创建完成后闭包就会被销毁,不会被长期持有,自然不会持续捕获self或writtenUpLabel的引用。 - 内存泄漏的核心是循环引用(双方互相持有强引用且无法释放),但这里不存在这个条件:闭包执行完就被释放,不会和
self、控件形成长期的引用闭环。 - 你提到的其他需要用
[weak self]的场景(比如网络请求、定时器回调),都是因为闭包会被第三方对象长期持有,才可能引发循环引用,和SnapKit这个场景完全不同。
你的代码示例:
writtenUpSwitch.snp.makeConstraints { $0.trailing.equalToSuperview().inset(10) $0.centerY.equalTo(writtenUpLabel.snp.centerY) }
内容的提问来源于stack exchange,提问作者Mark Thomas
相关产品推荐
相关产品推荐

