OSDN Git Service

不必要な#selectorを削除した
authormasakih <masakih@users.sourceforge.jp>
Sun, 12 Feb 2017 07:38:22 +0000 (16:38 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sun, 12 Feb 2017 07:38:22 +0000 (16:38 +0900)
KCD/HMAnchorageRepairManager.swift
KCD/HMBroserWindowController.swift
KCD/HMFleetViewController.swift
KCD/HMPeriodicNotifier.swift
KCD/HMResourceHistoryManager.swift
KCD/HMScreenshotListViewController.swift
KCD/HMShipViewController.swift

index 6dd6a95..4df6f0f 100644 (file)
@@ -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)
-    }
 }
index f54a8eb..4366572 100644 (file)
@@ -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 }
index dc2a74a..265985d 100644 (file)
@@ -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 {
index 2ecd56d..2ddbc5c 100644 (file)
@@ -29,6 +29,9 @@ class HMPeriodicNotifier: NSObject {
         
         notifyIfNeeded(nil)
     }
+    deinit {
+        NotificationCenter.default.removeObserver(self)
+    }
     private let hour: Int
     private let minutes: Int
     
index 788d776..2b02bd3 100644 (file)
@@ -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?) {
index 2277cf2..eb41ecd 100644 (file)
@@ -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<IndexPath>) -> 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 {
index 8394aaf..2a2749f 100644 (file)
@@ -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)
-            }
-        }
-    }
-}