title: error cannot convert value of type `Void` to expected argument type `() -> Void` UIAlertController
body: <p>Very often I have to show an alert to the user and I find myself writing the same code over and over again, so I built a convenience method.</p>
  
  <p>When <code>self.convenience.showAlertToUser()</code> is called in <code>viewDidLoad</code> I get error for argument <code>doThisAction</code> <em>cannot convert value of type <code>Void</code> to expected argument type <code>() -&gt; Void</code></em>. I don't understand why, because I pass in an argument of that type. Also, I don't know if I am creating a retain cycle, so I would appreciate your help.</p>
  
  <pre><code>class ConvenienceMethods {
  
     func showAlertToUser(alertMessage: String = "",actionOkTitle:String, actionCancelTitle:String, controller: UIViewController, cancelAction: Bool, doAction: @escaping (() -&gt; Void)) {
  
      let customAlert = UIAlertController(title: "", message: alertMessage, preferredStyle: .alert)
      let actionCancel = UIAlertAction(title: actionCancelTitle, style: .cancel, handler: nil)
      let actionOk =  UIAlertAction(title: actionOkTitle, style: .default, handler: { (action: UIAlertAction) in
          doAction()
      })
  
      if cancelAction == true {
          customAlert.addAction(actionCancel)
      }
          customAlert.addAction(actionOk)
          controller.present(customAlert, animated: true, completion: nil)
    }
  }
  
  
    class ManageFeedbackTableViewController {
         let convenience = ConvenienceMethods()
  
      override func viewDidLoad() {
          super.viewDidLoad()
        let doThisAction = self.segueWith(id: "segueID")
         self.convenience.showAlertToUser(alertMessage: "someMessage", actionOkTitle: "OK", actionCancelTitle: "No", controller: self, cancelAction: false, doAction: doThisAction)
  }
  
      //perform an action
       func segueWith(id: String) -&gt; Void{
       self.performSegue(withIdentifier: id, sender: self)
    }
  }
  </code></pre>