Fix Leaks
This commit is contained in:
@@ -244,7 +244,7 @@ class BrowserViewController: UIViewController
|
||||
webView.goBack()
|
||||
}, for: .touchUpInside)
|
||||
|
||||
documentControls.observations.append(webView.observe(\.canGoBack, changeHandler: { (_, _) in
|
||||
documentControls.observations.append(webView.observe(\.canGoBack, changeHandler: { (webView, _) in
|
||||
documentControls.navigationControlView.backButton.isEnabled = webView.canGoBack
|
||||
}))
|
||||
|
||||
@@ -253,7 +253,7 @@ class BrowserViewController: UIViewController
|
||||
webView.goForward()
|
||||
}, for: .touchUpInside)
|
||||
|
||||
documentControls.observations.append(webView.observe(\.canGoForward, changeHandler: { (_, _) in
|
||||
documentControls.observations.append(webView.observe(\.canGoForward, changeHandler: { (webView, _) in
|
||||
documentControls.navigationControlView.forwardButton.isEnabled = webView.canGoForward
|
||||
}))
|
||||
|
||||
|
||||
@@ -128,8 +128,8 @@ class TabBarView: UIView
|
||||
{
|
||||
static let preferredHeight: CGFloat = 30.0
|
||||
|
||||
public var delegate: TabBarViewDelegate?
|
||||
public var dataSource: TabBarViewDataSource?
|
||||
public weak var delegate: TabBarViewDelegate?
|
||||
public weak var dataSource: TabBarViewDataSource?
|
||||
|
||||
private var tabViews: [TabView] = []
|
||||
private var activeTabIndex: Int = 0
|
||||
@@ -192,9 +192,10 @@ class TabBarView: UIView
|
||||
|
||||
UIView.animate(withDuration: 0.22, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: [], animations: { [unowned self] in
|
||||
layoutSubviews()
|
||||
}, completion: { [unowned self] finished in
|
||||
}, completion: { [weak self] finished in
|
||||
guard let self = self else { return }
|
||||
tabViewsRemoved.forEach { $0.removeFromSuperview() }
|
||||
tabViews.removeAll { tabViewsRemoved.contains($0) }
|
||||
self.tabViews.removeAll { tabViewsRemoved.contains($0) }
|
||||
})
|
||||
}
|
||||
|
||||
@@ -232,14 +233,14 @@ class TabBarView: UIView
|
||||
let tabView = TabView()
|
||||
tabView.identifier = identifier
|
||||
|
||||
tabView.addAction(UIAction(handler: { [unowned self, tabView] _ in
|
||||
tabView.addAction(UIAction(handler: { [unowned self, unowned tabView] _ in
|
||||
guard let delegate = self.delegate else { return }
|
||||
guard let tabIndex = self.tabViews.firstIndex(of: tabView) else { return }
|
||||
|
||||
delegate.tabBarView(self, didClickToActivateTabAtIndex: tabIndex)
|
||||
}), for: .touchUpInside)
|
||||
|
||||
tabView.closeButton.addAction(UIAction(handler: { [unowned self, tabView] _ in
|
||||
tabView.closeButton.addAction(UIAction(handler: { [unowned self, unowned tabView] _ in
|
||||
guard let delegate = self.delegate else { return }
|
||||
guard let tabIndex = self.tabViews.firstIndex(of: tabView) else { return }
|
||||
|
||||
|
||||
@@ -29,11 +29,11 @@ class TabBarViewController: UIViewController, TabBarViewDataSource, TabBarViewDe
|
||||
tabBarView.delegate = self
|
||||
tabBarView.reloadTabs()
|
||||
|
||||
tabObserver = tabController.$tabs.sink(receiveValue: { [tabBarView] (newTabs: [Tab]) in
|
||||
tabObserver = tabController.$tabs.sink(receiveValue: { [unowned self] (newTabs: [Tab]) in
|
||||
DispatchQueue.main.async { tabBarView.reloadTabs() }
|
||||
})
|
||||
|
||||
activeTabIndexObserver = tabController.$activeTabIndex.sink(receiveValue: { [tabBarView] (activeIndex: Int) in
|
||||
activeTabIndexObserver = tabController.$activeTabIndex.sink(receiveValue: { [unowned self] (activeIndex: Int) in
|
||||
tabBarView.activateTab(atIndex: activeIndex)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user