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 {
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
}
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 }) {