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)
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) ]
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
}
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()
}
}
}
}()
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
}
}
@IBAction func selectSearchField(_ sender: AnyObject?) {
- window!.makeFirstResponder(searchField!)
+ window?.makeFirstResponder(searchField!)
}
}
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
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()
}
}
.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
}
}