Understanding Dispatchqueue.main.async Vs Dispatchqueue.main.sync In Swift