OSDN Git Service

強制アンラップなどクラッシュの危険性がある部分を修正
authormasakih <masakih@users.sourceforge.jp>
Tue, 21 Mar 2017 14:43:34 +0000 (23:43 +0900)
committermasakih <masakih@users.sourceforge.jp>
Tue, 21 Mar 2017 14:43:34 +0000 (23:43 +0900)
KCD/BroserWindowController.swift
KCD/CreateShipCommand.swift
KCD/FleetViewController.swift
KCD/HistoryWindowController.swift
KCD/ResourceHistoryManager.swift
KCD/ScreenshotListViewController.swift
KCD/ShipDetailViewController.swift

index 335ba88..7ad54f7 100644 (file)
@@ -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
         }
index b4419f7..0be2470 100644 (file)
@@ -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()
         }
     }
index fb0610f..1092bb3 100644 (file)
@@ -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
         }
index f30b727..b491f8f 100644 (file)
@@ -103,6 +103,6 @@ extension HistoryWindowController {
     }
     
     @IBAction func selectSearchField(_ sender: AnyObject?) {
-        window!.makeFirstResponder(searchField!)
+        window?.makeFirstResponder(searchField!)
     }
 }
index 302bbf9..295eabf 100644 (file)
@@ -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
         
index 6893a89..d3f5021 100644 (file)
@@ -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()
             }
         }
index e6f4a95..c3c47e8 100644 (file)
@@ -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
         }
     }