title: Detect if Swift app is being run from Xcode
body: <p>I would like to programmatically determine if the iOS app is being run directly from XCode (either in the simulator or on a tethered device).
  I've tried the -D DEBUG solution described <a href="https://stackoverflow.com/a/30013587/630657">here</a>, but when I then disconnect from Xcode and re-run the app, it still thinks it's in debug mode.
  I think what I'm looking for is a Swift version of <a href="https://developer.apple.com/library/ios/qa/qa1361/_index.html" rel="noreferrer">this function</a></p>
  
  <pre><code>#include &lt;assert.h&gt;
  #include &lt;stdbool.h&gt;
  #include &lt;sys/types.h&gt;
  #include &lt;unistd.h&gt;
  #include &lt;sys/sysctl.h&gt;
  
  static bool AmIBeingDebugged(void)
      // Returns true if the current process is being debugged (either 
      // running under the debugger or has a debugger attached post facto).
  {
      int                 junk;
      int                 mib[4];
      struct kinfo_proc   info;
      size_t              size;
  
      // Initialize the flags so that, if sysctl fails for some bizarre 
      // reason, we get a predictable result.
  
      info.kp_proc.p_flag = 0;
  
      // Initialize mib, which tells sysctl the info we want, in this case
      // we're looking for information about a specific process ID.
  
      mib[0] = CTL_KERN;
      mib[1] = KERN_PROC;
      mib[2] = KERN_PROC_PID;
      mib[3] = getpid();
  
      // Call sysctl.
      size = sizeof(info);
      junk = sysctl(mib, sizeof(mib) / sizeof(*mib), &amp;info, &amp;size, NULL, 0);
      assert(junk == 0);
  
      // We're being debugged if the P_TRACED flag is set.
      return ( (info.kp_proc.p_flag &amp; P_TRACED) != 0 );
  }
  </code></pre>