title: Why [weak self] is not required for @nonescaping closure?
body: <p>According to <a href="https://stackoverflow.com/a/38144190/72437">https://stackoverflow.com/a/38144190/72437</a> </p>
  
  <blockquote>
    <p>The reason is that the immediately applied closure {}() is considered
    @noescape. It does not retain the captured self.</p>
  </blockquote>
  
  <hr>
  
  <p>and <a href="https://oleb.net/blog/2016/10/optional-non-escaping-closures/" rel="nofollow noreferrer">https://oleb.net/blog/2016/10/optional-non-escaping-closures/</a></p>
  
  <blockquote>
    <p>However, it’s impossible to create a reference cycle with a
    non-escaping closure — the compiler can guarantee that the closure
    will have released all objects it captured by the time the function
    returns.</p>
  </blockquote>
  
  <hr>
  
  <p>However, I still do not understand why <code>@nonescaping</code> closure does not retain <code>self</code>, and doesn't require <code>[weak self]</code>? Can someone explain this concept in simpler manner?</p>