From: masakih Date: Sun, 12 Feb 2017 07:38:22 +0000 (+0900) Subject: 不必要な#selectorを削除した X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7dc228117c45da62377cea905323544425427f45;p=kcd%2FKCD.git 不必要な#selectorを削除した --- diff --git a/KCD/HMAnchorageRepairManager.swift b/KCD/HMAnchorageRepairManager.swift index 6dd6a95d..4df6f0f3 100644 --- a/KCD/HMAnchorageRepairManager.swift +++ b/KCD/HMAnchorageRepairManager.swift @@ -8,10 +8,6 @@ import Cocoa -fileprivate extension Selector { - static let henseiDidChangeNotification = #selector(HMAnchorageRepairManager.henseiDidChangeNotification(_:)) - static let didReturnToBaseNotification = #selector(HMAnchorageRepairManager.didReturnToBaseNotification(_:)) -} class HMAnchorageRepairManager: NSObject { static let `default`: HMAnchorageRepairManager = HMAnchorageRepairManager() @@ -30,8 +26,19 @@ class HMAnchorageRepairManager: NSObject { super.init() let nc = NotificationCenter.default - nc.addObserver(self, selector: .henseiDidChangeNotification, name: .HenseiDidChange, object: nil) - nc.addObserver(self, selector: .didReturnToBaseNotification, name: .PortAPIReceived, object: nil) + nc.addObserver(forName: .HenseiDidChange, object: nil, queue: nil) { notification in + guard let userInfo = notification.userInfo, + let info = userInfo[HMChangeHenseiCommand.userInfoKey] as? HenseiDidChangeUserInfo + else { return } + self.resetIfNeeds(info: info) + } + nc.addObserver(forName: .PortAPIReceived, object: nil, queue: nil) { (Notification) in + if Date().timeIntervalSince(self.repairTime) < 20 * 60 { return } + self.reset() + } + } + deinit { + NotificationCenter.default.removeObserver(self) } private func reset() { @@ -85,17 +92,4 @@ class HMAnchorageRepairManager: NSObject { private func resetIfNeeds(info: HenseiDidChangeUserInfo) { if needsReset(info: info) { reset() } } - - @objc fileprivate func didReturnToBaseNotification(_ notification: Notification) { - let now = Date() - let passedTime = now.timeIntervalSince(repairTime) - if passedTime < 20 * 60 { return } - reset() - } - @objc fileprivate func henseiDidChangeNotification(_ notification: Notification) { - guard let userInfo = notification.userInfo, - let info = userInfo[HMChangeHenseiCommand.userInfoKey] as? HenseiDidChangeUserInfo - else { return } - resetIfNeeds(info: info) - } } diff --git a/KCD/HMBroserWindowController.swift b/KCD/HMBroserWindowController.swift index f54a8eb8..43665721 100644 --- a/KCD/HMBroserWindowController.swift +++ b/KCD/HMBroserWindowController.swift @@ -10,8 +10,6 @@ import Cocoa fileprivate extension Selector { - static let didCangeCombined = #selector(HMBroserWindowController.didCangeCombined(_:)) - static let reloadContent = #selector(HMBroserWindowController.reloadContent(_:)) static let deleteCacheAndReload = #selector(HMBroserWindowController.deleteCacheAndReload(_:)) static let clearQuestList = #selector(HMBroserWindowController.clearQuestList(_:)) @@ -77,10 +75,27 @@ class HMBroserWindowController: NSWindowController { bind("flagShipID", to: deckContoller, withKeyPath: "selection.ship_0", options: nil) - NotificationCenter.default.addObserver(self, selector: .didCangeCombined, name: .CombinedDidCange, object: nil) + NotificationCenter.default + .addObserver(forName: .CombinedDidCange, object: nil, queue: nil) { (notification) in + guard UserDefaults.standard.autoCombinedView, + let type = notification.userInfo?[HMCombinedType] as? CombineType + else { return } + if !Thread.isMainThread { Thread.sleep(forTimeInterval: 0.1) } + DispatchQueue.main.async { + switch type { + case .cancel: + self.hideCombinedView() + case .maneuver, .water, .transportation: + self.showCombinedView() + } + } + } if UserDefaults.standard.lastHasCombinedView { showCombinedView() } } + deinit { + NotificationCenter.default.removeObserver(self) + } func windowWillClose(_ notification: Notification) { UserDefaults.standard.lastHasCombinedView = isCombinedMode @@ -171,19 +186,6 @@ class HMBroserWindowController: NSWindowController { window?.setFrame(winFrame, display: true, animate: true) combinedViewController.view.isHidden = true } - func didCangeCombined(_ notification: Notification?) { - guard UserDefaults.standard.autoCombinedView else { return } - guard let type = notification?.userInfo?[HMCombinedType] as? CombineType else { return } - if !Thread.isMainThread { Thread.sleep(forTimeInterval: 0.1) } - DispatchQueue.main.async { - switch type { - case .cancel: - self.hideCombinedView() - case .maneuver, .water, .transportation: - self.showCombinedView() - } - } - } override func swipe(with event: NSEvent) { guard UserDefaults.standard.useSwipeChangeCombinedView else { return } diff --git a/KCD/HMFleetViewController.swift b/KCD/HMFleetViewController.swift index dc2a74aa..265985d3 100644 --- a/KCD/HMFleetViewController.swift +++ b/KCD/HMFleetViewController.swift @@ -14,10 +14,6 @@ enum HMFleetViewType: Int { case miniVierticalType = 2 } -fileprivate extension Selector { - static let updateFleet = #selector(HMFleetViewController.updateFleet(_:)) -} - fileprivate var shipKeysContext: Int = 0 fileprivate var shipsContext: Int = 0 @@ -94,7 +90,14 @@ class HMFleetViewController: NSViewController { } fleetNumber = 1 - NotificationCenter.default.addObserver(self, selector: .updateFleet, name: .DidPrepareFleet, object: nil) + NotificationCenter.default + .addObserver(forName: .DidPrepareFleet, object: nil, queue: nil) { _ in + self.willChangeValue(forKey: "fleetNumber") + self.didChangeValue(forKey: "fleetNumber") + } + } + deinit { + NotificationCenter.default.removeObserver(self) } private let type: HMFleetViewType @@ -264,11 +267,6 @@ class HMFleetViewController: NSViewController { didChangeValue(forKey: $0) } } - - func updateFleet(_ notification: Notification) { - willChangeValue(forKey: "fleetNumber") - didChangeValue(forKey: "fleetNumber") - } } extension HMFleetViewController { diff --git a/KCD/HMPeriodicNotifier.swift b/KCD/HMPeriodicNotifier.swift index 2ecd56dd..2ddbc5c8 100644 --- a/KCD/HMPeriodicNotifier.swift +++ b/KCD/HMPeriodicNotifier.swift @@ -29,6 +29,9 @@ class HMPeriodicNotifier: NSObject { notifyIfNeeded(nil) } + deinit { + NotificationCenter.default.removeObserver(self) + } private let hour: Int private let minutes: Int diff --git a/KCD/HMResourceHistoryManager.swift b/KCD/HMResourceHistoryManager.swift index 788d7763..2b02bd3c 100644 --- a/KCD/HMResourceHistoryManager.swift +++ b/KCD/HMResourceHistoryManager.swift @@ -9,7 +9,6 @@ import Cocoa fileprivate extension Selector { - static let reduce = #selector(HMResourceHistoryManager.reduce(_:)) static let notifyIfNeeded = #selector(HMResourceHistoryManager.notifyIfNeeded(_:)) } @@ -21,7 +20,8 @@ class HMResourceHistoryManager: NSObject { periodicNotification = HMPeriodicNotifier(hour: 23, minutes: 3) super.init() notifyIfNeeded(nil) - NotificationCenter.default.addObserver(self, selector: .reduce, name: .Periodic, object: periodicNotification) + NotificationCenter.default + .addObserver(forName: .Periodic, object: periodicNotification, queue: nil, using: reduce) } @objc fileprivate func notifyIfNeeded(_ timer: Timer?) { diff --git a/KCD/HMScreenshotListViewController.swift b/KCD/HMScreenshotListViewController.swift index 2277cf2d..eb41ecd6 100644 --- a/KCD/HMScreenshotListViewController.swift +++ b/KCD/HMScreenshotListViewController.swift @@ -20,12 +20,6 @@ fileprivate struct CacheVersionInfo { } } -fileprivate extension Selector { - static let viewFrameDidChange = #selector(HMScreenshotListViewController.viewFrameDidChange(_:)) - static let scrollViewDidLiveScrollNotification = #selector(HMScreenshotListViewController.scrollViewDidLiveScrollNotification(_:)) - static let reloadData = #selector(HMScreenshotListViewController.reloadData(_:)) -} - class HMScreenshotListViewController: NSViewController { override func viewDidLoad() { @@ -43,8 +37,13 @@ class HMScreenshotListViewController: NSViewController { let nc = NotificationCenter.default let scrollView = collectionView.enclosingScrollView - nc.addObserver(self, selector: .viewFrameDidChange, name: .NSViewFrameDidChange, object: collectionView) - nc.addObserver(self, selector: .scrollViewDidLiveScrollNotification, name: .NSScrollViewDidLiveScroll, object: scrollView) + + + nc.addObserver(forName: .NSViewFrameDidChange, object: collectionView, queue: nil, using: viewFrameDidChange) + nc.addObserver(forName: .NSScrollViewDidLiveScroll, object: collectionView.enclosingScrollView, queue: nil) { _ in + let visibleItems = self.collectionView.indexPathsForVisibleItems() + self.collectionVisibleDidChangeHandler?(visibleItems) + } nc.addObserver(forName: .NSScrollViewWillStartLiveScroll, object: scrollView, queue: nil) { _ in self.inLiveScrolling = true } @@ -54,7 +53,8 @@ class HMScreenshotListViewController: NSViewController { viewFrameDidChange(nil) - perform(.reloadData, with: nil, afterDelay: 0.0) + DispatchQueue.main + .asyncAfter(deadline: .now() + 0.0001 ) { self.reloadData() } } var screenshots: HMScreenshotModel = HMScreenshotModel() @@ -110,11 +110,7 @@ class HMScreenshotListViewController: NSViewController { } fileprivate var collectionVisibleDidChangeHandler: ((Set) -> Void)? = nil - func scrollViewDidLiveScrollNotification(_ notification: Notification?) { - let visibleItems = collectionView.indexPathsForVisibleItems() - collectionVisibleDidChangeHandler?(visibleItems) - } - + fileprivate var collectionSelectionDidChangeHandler: ((Int) -> Void)? = nil override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if let object = object as? NSCollectionView { diff --git a/KCD/HMShipViewController.swift b/KCD/HMShipViewController.swift index 8394aaf6..2a2749f8 100644 --- a/KCD/HMShipViewController.swift +++ b/KCD/HMShipViewController.swift @@ -15,10 +15,6 @@ fileprivate enum ViewType: Int { case power3 } -fileprivate extension Selector { - static let scrollViewDidEndLiveScrollNotification = #selector(HMShipViewController.scrollViewDidEndLiveScrollNotification(_:)) -} - class HMShipViewController: HMMainTabVIewItemViewController { override var nibName: String! { return "HMShipViewController" @@ -34,9 +30,17 @@ class HMShipViewController: HMMainTabVIewItemViewController { shipController.addObserver(self, forKeyPath: NSSortDescriptorsBinding, context: nil) shipController.addObserver(self, forKeyPath: "arrangedObjects", context: nil) - let nc = NotificationCenter.default - [expTableView,powerTableView,power2TableView,power3TableView].forEach { - nc.addObserver(self, selector: .scrollViewDidEndLiveScrollNotification, name: .NSScrollViewDidEndLiveScroll, object: $0) + let tableViews = [expTableView,powerTableView,power2TableView,power3TableView] + tableViews + .forEach { + NotificationCenter.default + .addObserver(forName: .NSScrollViewDidEndLiveScroll, object: $0, queue: nil) { notification in + guard let target = notification.object as? NSScrollView else { return } + let visibleRect = target.documentVisibleRect + tableViews + .filter { $0 != target } + .forEach { $0?.documentView?.scrollToVisible(visibleRect) } + } } #if DEBUG standardDeviationField.isHidden = false @@ -141,15 +145,3 @@ extension HMShipViewController: NSTableViewDelegate { return tableView.make(withIdentifier: identifier, owner: nil) } } - -extension HMShipViewController { - func scrollViewDidEndLiveScrollNotification(_ notification: Notification) { - guard let target = notification.object as? NSScrollView else { return } - let visibleRect = target.documentVisibleRect - [expTableView,powerTableView,power2TableView,power3TableView].forEach { - if $0 != target { - $0?.documentView?.scrollToVisible(visibleRect) - } - } - } -}