That's also why I didn't use But the real question is...
if you're updating the data faster than you can update the UI, is the data actually updating?
I completely agree that dispatching back to the main queue is the ideal way to do it (in fact, in my SO answer, I said to try that first), but that doesn't always work.
If you make that change in the code I posted, for example, you fill up the main queue faster than it can handle and the UI hangs.
What I'm looking for is just a general code review, keeping in mind that the code and comments are intended to try to help teach someone how to implement this concept. */ var update Interval: NSTime Interval = 0.1 // Create a serial queue for synchronized data access let data Access Queue = dispatch_queue_create("ui Update Timer Access Queue", DISPATCH_QUEUE_SERIAL) func startup() func shutdown() func update Data() func update UI() code looks just like all your other Objective-C/Swift stuff.
Get these wrong and you could spend hours trying to figure out why things aren’t working (like I have). For one it would be nice to dynamically size the row (instead of hacking).Connect the table view from the Storyboard to your View Controller as a new IBOutlet.To add a table header view, grab a view and drop it near the top of your table view.The more correct way to handle this sort of stuff, in my opinion, isn't to have a looping updater that refreshes your entire UI every 10ms (consider a more complicated view with several more elements to update).Just as we can from the main thread put code to run on a background thread, from a background thread, we can add code to the main queue.