From: masakih Date: Tue, 21 Mar 2017 14:43:34 +0000 (+0900) Subject: 強制アンラップなどクラッシュの危険性がある部分を修正 X-Git-Tag: 1.9b6~20 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6fe70a9028ea4c4ca48ef9a7391978d3782c79e8;p=kcd%2FKCD.git 強制アンラップなどクラッシュの危険性がある部分を修正 --- diff --git a/KCD/BroserWindowController.swift b/KCD/BroserWindowController.swift index 335ba886..7ad54f74 100644 --- a/KCD/BroserWindowController.swift +++ b/KCD/BroserWindowController.swift @@ -398,6 +398,7 @@ extension BroserWindowController { return fleetListRect } fileprivate func setFleetView(position newPosition: FleetViewPosition, animate: Bool) { + guard let window = window else { return } changeFleetViewForFleetViewPositionIfNeeded(position: newPosition) let winFrame = windowFrameForFleetViewPosition(position: newPosition) let flashRect = flashFrameForFleetViewPosition(position: newPosition) @@ -407,7 +408,7 @@ extension BroserWindowController { UserDefaults.standard.fleetViewPosition = newPosition if animate { - let winAnime: [String: Any] = [ NSViewAnimationTargetKey: window!, + let winAnime: [String: Any] = [ NSViewAnimationTargetKey: window, NSViewAnimationEndFrameKey: NSValue(rect: winFrame) ] let flashAnime: [String: Any] = [ NSViewAnimationTargetKey: gameViewController.view, NSViewAnimationEndFrameKey: NSValue(rect: flashRect) ] @@ -416,7 +417,7 @@ extension BroserWindowController { let anime = NSViewAnimation(viewAnimations: [winAnime, flashAnime, fleetAnime]) anime.start() } else { - window!.setFrame(winFrame, display: false) + window.setFrame(winFrame, display: false) gameViewController.view.frame = flashRect fleetViewController.view.frame = fleetListRect } diff --git a/KCD/CreateShipCommand.swift b/KCD/CreateShipCommand.swift index b4419f7d..0be24704 100644 --- a/KCD/CreateShipCommand.swift +++ b/KCD/CreateShipCommand.swift @@ -14,7 +14,8 @@ class CreateShipCommand: JSONCommand { return false } override func execute() { - DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { + DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { [weak self] in + guard let `self` = self else { return } self.afterExecute() } } diff --git a/KCD/FleetViewController.swift b/KCD/FleetViewController.swift index fb0610fb..1092bb3f 100644 --- a/KCD/FleetViewController.swift +++ b/KCD/FleetViewController.swift @@ -45,7 +45,8 @@ class FleetViewController: NSViewController { } }() details = (1...6).map { - let res = ShipDetailViewController(type: shipiewType)! + guard let res = ShipDetailViewController(type: shipiewType) + else { fatalError("Can not create ShipDetailViewController") } res.title = "\($0)" return res } diff --git a/KCD/HistoryWindowController.swift b/KCD/HistoryWindowController.swift index f30b7272..b491f8fe 100644 --- a/KCD/HistoryWindowController.swift +++ b/KCD/HistoryWindowController.swift @@ -103,6 +103,6 @@ extension HistoryWindowController { } @IBAction func selectSearchField(_ sender: AnyObject?) { - window!.makeFirstResponder(searchField!) + window?.makeFirstResponder(searchField!) } } diff --git a/KCD/ResourceHistoryManager.swift b/KCD/ResourceHistoryManager.swift index 302bbf99..295eabfe 100644 --- a/KCD/ResourceHistoryManager.swift +++ b/KCD/ResourceHistoryManager.swift @@ -62,7 +62,7 @@ class ResourceHistoryManager: NSObject { let now = Date() var nowComp = Calendar.current .dateComponents([.year, .month, .day, .hour, .minute], from: now) - var minutes: Int = (nowComp.minute! + 2) / 5 + var minutes = nowComp.minute.map { ($0 + 2) / 5 } ?? 0 minutes *= 5 nowComp.minute = minutes diff --git a/KCD/ScreenshotListViewController.swift b/KCD/ScreenshotListViewController.swift index 6893a897..d3f5021b 100644 --- a/KCD/ScreenshotListViewController.swift +++ b/KCD/ScreenshotListViewController.swift @@ -342,22 +342,26 @@ extension ScreenshotListViewController: NSTouchBarDelegate { screenshotTouchBar.defaultItemIdentifiers = identifiers if collectionVisibleDidChangeHandler == nil { - collectionVisibleDidChangeHandler = { [unowned self] visible in - guard let objects = self.arrangedInformations else { return } - guard let index = visible.first else { return } - let middle = index.item + visible.count / 2 + collectionVisibleDidChangeHandler = { [weak self] in + guard let `self` = self, + let objects = self.arrangedInformations, + let index = $0.first + else { return } + let middle = index.item + $0.count / 2 if middle < objects.count - 1 { self.scrubber.scrollItem(at: middle, to: .none) } } } if collectionSelectionDidChangeHandler == nil { - collectionSelectionDidChangeHandler = { [unowned self] index in - self.scrubber.selectedIndex = index + collectionSelectionDidChangeHandler = { [weak self] in + guard let `self` = self else { return } + self.scrubber.selectedIndex = $0 } } if reloadHandler == nil { - reloadHandler = { [unowned self] _ in + reloadHandler = { [weak self] _ in + guard let `self` = self else { return } self.scrubber.reloadData() } } diff --git a/KCD/ShipDetailViewController.swift b/KCD/ShipDetailViewController.swift index e6f4a954..c3c47e89 100644 --- a/KCD/ShipDetailViewController.swift +++ b/KCD/ShipDetailViewController.swift @@ -34,7 +34,8 @@ class ShipDetailViewController: NSViewController { .default .addObserver(forName: .DidUpdateGuardEscape, object: nil, - queue: nil) { [unowned self] _ in + queue: nil) { [weak self] _ in + guard let `self` = self else { return } self.guardEscaped = self.ship?.guardEscaped ?? false } }