Open liwenDeng opened 7 years ago
估计是因为做了延迟了
unowned self 就是你确定这个 self 是一直存在的 weak 就代表它是一个可选的self 一个 self! 一个self? 他这个要改就得好好看看代码。 有时间再搞吧
这里需要将[unowned self] in屏蔽掉
Setting guard let superview = newSuperview else { return }
helps, but there is another crash later with the same unowned reference in ESRefreshHeaderView
.
open override func didMoveToSuperview() {
super.didMoveToSuperview()
DispatchQueue.main.async {
[unowned self] in
self.scrollViewBounces = self.scrollView?.bounces ?? true
self.scrollViewInsets = self.scrollView?.contentInset ?? UIEdgeInsets.zero
}
}
@liwenDeng This crash have been fixed in https://github.com/eggswift/pull-to-refresh/pull/102
在Demo 中二级页面下拉过程中返回到首页会 crash, 其中一处crash 断点在
ESRefreshComponent.swift
中,crash 原因是 newSuperview 会存在为 nil 的情况。
个人觉得是否应该将
DispatchQueue.main.async { [unowned self, newSuperview]
替换为DispatchQueue.main.async { [weak self, newSuperview]
更好一点? 另外几处的[unowned self]
改为[weak self]
是否会更安全?ps: 我不是很懂
[unowned self]
和[weak self]
的区别