I have been using DispatchQueue.main.async
for a long time to perform UI related operations.
Swift provides both DispatchQueue.main.async
GCD
allows you to execute a task synchronously
or asynchronously
[About]
synchronous
(block and wait) function returns a control when the task will be completed
asynchronous
(dispatch and proceed) function returns a control immediately, dispatching the task to start to an appropriate queue but not waiting for it to complete.
[DispatchQueue]