title: Updating UI inside a closure via self a bad practice?
body: <p>I'm fairly new to multithreaded programming and so far I've been updating my UI/views inside closures via <code>self.myview.setTitle, etc.</code> </p>
  
  <p>Here's a sample code of how I'm updating my UI inside handlers/closures</p>
  
  <pre><code>SFSpeechRecognizer.requestAuthorization { (authStatus) in
          switch authStatus
          {
          case .authorized:
              self.recordButton.isEnabled = true
          case .denied:
              self.recordButton.isEnabled = false
              self.recordButton.setTitle("User denied access to speech recognition", for: .disabled)
          case .restricted:
              self.recordButton.isEnabled = false
              self.recordButton.setTitle("Speech recognition is disabled for this device", for: .disabled)
          case .notDetermined:
              self.recordButton.isEnabled = false
              self.recordButton.setTitle("Speech recognition has not yet been authorized", for: .disabled)
          default:
              break;
          }
      }
  </code></pre>
  
  <p>That's just a sample of what I've been doing but I do that for other tasks too like downloading a json data from a weather API and updating my UIs acordingly, etc. </p>
  
  <p>Now I've heard that this is bad practice and I was hoping to know why. Also, what is the correct way of updating the UI inside a closure thread? </p>