title: Shall we always use [unowned self] inside closure in Swift
body: <p>In WWDC 2014 session 403 <a href="https://developer.apple.com/videos/wwdc/2014/" rel="noreferrer">Intermediate Swift</a> and <a href="http://asciiwwdc.com/2014/sessions/403" rel="noreferrer">transcript</a>, there was the following slide</p>
  
  <p><img src="https://i.stack.imgur.com/Jd9Co.png" alt="enter image description here"></p>
  
  <p>The speaker said in that case, if we don't use <code>[unowned self]</code> there, it will be a memory leak. Does it mean we should always use <code>[unowned self]</code> inside closure? </p>
  
  <p>On <a href="https://github.com/JakeLin/SwiftWeather/blob/105e3ad7ebd775a7903df1c843dc88f74bbac9f7/Swift%20Weather/ViewController.swift#L64" rel="noreferrer">line 64 of ViewController.swift of the Swift Weather app</a>, I don't use <code>[unowned self]</code>. But I update the UI by using some <code>@IBOutlet</code>s like <code>self.temperature</code> and <code>self.loadingIndicator</code>. It may be OK because all <code>@IBOutlet</code>s I defined are <code>weak</code>. But for safety, should we always use <code>[unowned self]</code>?</p>
  
  <pre><code>class TempNotifier {
    var onChange: (Int) -&gt; Void = {_ in }
    var currentTemp = 72
    init() {
      onChange = { [unowned self] temp in
        self.currentTemp = temp
      }
    }
  }
  </code></pre>