title: Preventing macOS App Nap in Swift 4
body: <p>I'm using Swift 4 and Xcode 9.2 to build a timer app and I'm running into issues with macOS App Nap. I know that the issues are caused by App Nap since when I disable App Nap globally the issues go away. However I only want to disable App Nap for this particular app when I need to for it to run properly. I know that similar questions have been answered before and I have seen them, but either I don't understand how to use them in my case or they do not work anymore (possibly because of changes to the Swift language).
  Here is a small example of code that produces the issues I'm having:</p>
  
  <pre><code>import Cocoa
  
  @NSApplicationMain
  class AppDelegate: NSObject, NSApplicationDelegate {
  
      @IBOutlet weak var window: NSWindow!
  
      var timer = Timer()
      var seconds = 300
  
      func applicationDidFinishLaunching(_ aNotification: Notification) {
          // Insert code here to initialize your application
      }
  
      func applicationWillTerminate(_ aNotification: Notification) {
          // Insert code here to tear down your application
      }
  
      @IBAction func goButton(_ sender: NSButton) {
          if !timer.isValid {
              timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(AppDelegate.ticker), userInfo: nil, repeats: true)
          }
      }
  
      @objc func ticker() {
          seconds -= 1
          if seconds == 0 {
              timer.invalidate()
              print("Timer Ended.")
          }
      }
  }
  </code></pre>
  
  <p>Any help is greatly appreciated.</p>