Фикс утечки памяти

This commit is contained in:
Mikhail Konovalov 2018-01-11 12:40:04 +03:00
parent 397f6d33b2
commit 59de97d267
2 changed files with 14 additions and 16 deletions

8
Classes/RMRPullToRefresh.swift Executable file → Normal file
View File

@ -46,14 +46,6 @@ open class RMRPullToRefresh: NSObject {
self.сontroller = controller
}
/// Метод нужно вызывать в deinit экрана, в котором используется pull-to-refresh.
///
/// Это временное решение для избежания краша из-за KVO-наблюдателей на scroll view
/// (при уничтожении скролла и экрана, в котором он лежит).
open func unsubscribeFromBindings() {
сontroller?.unsubscribeFromScrollViewEvents()
}
open func configureView(_ view :RMRPullToRefreshView, state:RMRPullToRefreshState, result:RMRPullToRefreshResultType) {
сontroller?.configureView(view, state: state, result: result)
}

22
Classes/RMRPullToRefreshController.swift Executable file → Normal file
View File

@ -382,18 +382,24 @@ open class RMRPullToRefreshController: NSObject {
return
}
self.contentOffsetObservation = scrollView.observe(\.contentOffset, options: [.new]) { scrollView, change in
guard let newContentOffset = change.newValue else { return }
self.scrollViewDidScroll(scrollView, contentOffset: newContentOffset)
self.contentOffsetObservation = scrollView.observe(
\.contentOffset,
options: [.new]) { [weak self] (scrollView, change) in
guard let newContentOffset = change.newValue else { return }
self?.scrollViewDidScroll(scrollView, contentOffset: newContentOffset)
}
self.contentSizeObservation = scrollView.observe(\.contentSize, options: [.new]) { scrollView, change in
guard let newContentSize = change.newValue else { return }
self.scrollViewDidChangeContentSize(scrollView, contentSize: newContentSize)
self.contentSizeObservation = scrollView.observe(
\.contentSize,
options: [.new]) { [weak self] (scrollView, change) in
guard let newContentSize = change.newValue else { return }
self?.scrollViewDidChangeContentSize(scrollView, contentSize: newContentSize)
}
self.panStateObservation = scrollView.panGestureRecognizer.observe(\.state, options: [.new]) { panGestureRecognizer, _ in
self.scrollViewDidChangePanState(scrollView, panState: panGestureRecognizer.state)
self.panStateObservation = scrollView.panGestureRecognizer.observe(
\.state,
options: [.new]) { [weak self] panGestureRecognizer, _ in
self?.scrollViewDidChangePanState(scrollView, panState: panGestureRecognizer.state)
}
}