title: Closure outlives its created instance
body: <p>Let's say I have a view controller, and in its <code>viewDidLoad</code> I am calling this function: </p>
  
  <pre><code>func callDataSource()
  {
  
      let dataSource = DataSource()
      dataSource.callUber {
          print("In viewDidLoad")
      }
  
      return
  }
  </code></pre>
  
  <p>and this <code>DataSource</code> class is</p>
  
  <pre><code>class DataSource {
  
      func callUber(withSuccess success: @escaping (() -&gt; Void))
      {
          let uberManager = UberDataFetcher()
          uberManager.getPrice {
              print("In Data Source")
              success()
          }
          return
      }
  }
  </code></pre>
  
  <p>And this <code>UberDataFetcher</code> is just a class that calls an Uber API. My question is: I have defined the <code>DataSource</code> object within the scope of the <code>callDataSource</code> function; this means that the object gets deallocated once that function returns. How does the completion block outlives the instance that has created it?</p>