title: Avoiding using self in the DispatchQueue
body: <p>I wonder how to eliminate of using <code>self</code> inside the <code>DispatchQueue</code>. As a good practice, we are supposed to use <code>self</code> only in the <code>init()</code></p>
  <pre><code>func loadAllClasses() {
      DispatchQueue.global(qos: .background).async {
        self.classVM.fetchAllClasses(id: id, completion: { (classes, error) in
          DispatchQueue.main.async {
            if error != nil {
              self.showAlert(message: &quot;try again&quot;, title: &quot;Error&quot;)
            }
            if let classes = classes {
              self.classesList = classes
              self.classesCollectionView.reloadData()
            }
          }
        })
      }
    }
  </code></pre>