OSDN Git Service

addObserverOnceを利用するようにした
authormasakih <masakih@users.sourceforge.jp>
Sun, 29 Oct 2017 07:08:40 +0000 (16:08 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sun, 29 Oct 2017 07:08:40 +0000 (16:08 +0900)
KCD/FleetManager.swift
KCD/FleetViewController.swift
KCD/WindowManager.swift

index bd01c19..a9ec66d 100644 (file)
@@ -48,13 +48,11 @@ final class FleetManager: NSObject {
         
         if fleets[0].ships.isEmpty {
             
-            let center = NotificationCenter.default
-            weak var token: NSObjectProtocol!
-            token = center.addObserver(forName: .PortAPIReceived, object: nil, queue: nil) {_ in
-                
-                center.removeObserver(token)
-                DispatchQueue.main.async(execute: self.setupFleetController)
-                DispatchQueue.main.async(execute: self.setNewFleetNumberToShip)
+            NotificationCenter.default
+                .addObserverOnce(forName: .PortAPIReceived, object: nil, queue: nil) { _ in
+                    
+                    DispatchQueue.main.async(execute: self.setupFleetController)
+                    DispatchQueue.main.async(execute: self.setNewFleetNumberToShip)
             }
             
         } else {
index e9ce267..3b06ccc 100644 (file)
@@ -255,11 +255,9 @@ final class FleetViewController: NSViewController {
         fleetNumber = 1
         
         // 初回起動時などデータがまだない時はportAPIを受信後設定する
-        weak var token: NSObjectProtocol?
-        token = NotificationCenter.default
-            .addObserver(forName: .PortAPIReceived, object: nil, queue: nil) { [weak self] _ in
+        NotificationCenter.default
+            .addObserverOnce(forName: .PortAPIReceived, object: nil, queue: nil) { [weak self] _ in
                 
-                token.map(NotificationCenter.default.removeObserver)
                 self?.fleetNumber = 1
         }
         
index e3057a0..c2e5ddf 100644 (file)
@@ -122,12 +122,9 @@ final class WindowManager {
         browserWindowControllers.append(browser)
         browser.window?.makeKeyAndOrderFront(nil)
         
-        weak var token: NSObjectProtocol! = nil
-        
-        token = NotificationCenter.default
-            .addObserver(forName: NSWindow.willCloseNotification, object: browser.window, queue: nil) { [unowned self] notification in
+        NotificationCenter.default
+            .addObserverOnce(forName: NSWindow.willCloseNotification, object: browser.window, queue: nil) { [unowned self] notification in
                 
-                NotificationCenter.default.removeObserver(token)
                 if let obj = notification.object as? NSWindow,
                     let index = self.browserWindowControllers.index(where: { $0.window == obj }) {