diff --git a/Classes/RMRPullToRefresh.swift b/Classes/RMRPullToRefresh.swift old mode 100755 new mode 100644 index 3175e0d..33a850c --- a/Classes/RMRPullToRefresh.swift +++ b/Classes/RMRPullToRefresh.swift @@ -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) } diff --git a/Classes/RMRPullToRefreshController.swift b/Classes/RMRPullToRefreshController.swift old mode 100755 new mode 100644 index 952bfde..2619126 --- a/Classes/RMRPullToRefreshController.swift +++ b/Classes/RMRPullToRefreshController.swift @@ -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) } }