Why can't OperationQueue.underlyingQueue point to DispatchQueue.main?

The docs for OperationQueue.underlyingQueue specifically state that the value of this property must not be the value returned by

dispatch_get_main_queue()
.


Is there a specific reason for this? Being able to use the underlyingQueue as the main queue enables some interesting patterns that would otherwise be more cumbersome with pure Dispatch APIs, and even more cumbersome without either. For example, a view controller might want to queue up view updates to be performed only after the view has loaded. This pattern has helped clean up quite a bit of state for me that was appearing as boolean flags - isThisReady, isThatReady, isThisDone, etc.


let queue = OperationQueue()
queue.underlyingQueue = DispatchQueue.main


init() {
  ...


  queue.isSuspended = true
}


func viewDidLoad() {
  ...


  queue.isSuspended = false
}