Swift Delegates and Protocol
<p>I am learning swift protocol and delegate pattern.But,I really need help with the following problem which return me empty results</p>

<p>At ViewController 1 : </p>

<pre><code>protocol GetAllDataProtocol{
     func didReadInfo(info : [[String:String]])
}
class ViewController1 : {
     var delegate : GetAllDataProtocol?
     var info_data : [[String:String]] = []

     override func viewDidLoad() {

         readData()
     }

     func readData(){
         info_data.append(["ID" :"234FD","ADDRESS":"Maimi","TYPE":"A"])
         delegate?.didReadInfo(info_data)
     }
}
</code></pre>

<p>Then at ViewController 2 : </p>

<pre><code>class SubmissionViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate,GetAllDataProtocol{
      var info_data = [[String:String]]()

      @IBAction func submitTapped(sender: AnyObject) {
           print("After : \(info_data)")
      }

      func didReadInfo(info: [[String : String]]) {
           dispatch_async(dispatch_get_main_queue(),{
               self.info_data = info
               print("Before : \(self.info_data)")
           })
      }
}
</code></pre>

<p>When it run</p>

<pre><code>After : []
</code></pre>

<p>Why it didnt run "before?" and why i can't get the data.</p>