2016-04-13 26 views
0

Was passiert, wenn ich meine Updater in ViewWillAppear mit dispatch_async? Ich weiß nicht ... es scheint zu einfach. Ich kann das nicht verstehen, weil ich in C# nach meinen Threads .Abort() benutzt habe. Was ist mit schnell? Wird mein Thread nach der Laufzeit abgebrochen?Async-Tabellenansicht-Update in Swift

override func viewWillAppear(animated: Bool) 
    { 
    super.viewWillAppear(animated) 

    let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
    dispatch_async(dispatch_get_global_queue(priority, 0)) { 

     self.data = [] 

     //some code with update 

     dispatch_async(dispatch_get_main_queue()) { 
      self.tableView.reloadData() 

     } 
    } 

Antwort

-1

würde ich etwas in dieser Richtung empfehlen:

override func viewWillAppear(animated: Bool) 
{ 
    super.viewWillAppear(animated) 
    updateData() 
} 

func updateData() { 

    makeAsyncCall{ (data) ->() in 
     dispatch_async(dispatch_get_main_queue()) { 
      self.data = [] 
      self.tableView.reloadData() 

     } 
    } 

} 

func makeAsyncCall(completion: ([DataType]) ->()) { 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 

     /* do data update */ 
     completion(data) 
    } 
} 

Es ist besser, bricht die Funktionalität auf, und soweit ich weiß (ungetestet) es sollte keine Probleme haben.