Difference requiresMainQueueSetup and dispatch_get_main_queue? : <p>I am trying to learn about creating react-native modules for iOS and there is one aspect that came up</p>

<p><a href="https://facebook.github.io/react-native/docs/native-modules-ios.html#threading" rel="noreferrer">Official documentation on threading</a> mentions this block of code alongside its variations</p>

<pre><code>- (dispatch_queue_t)methodQueue
{
  return dispatch_get_main_queue();
}
</code></pre>

<p>There is another undocumented peace I saw a lot in the third party libraries which is this</p>

<pre><code>+ (BOOL)requiresMainQueueSetup
{
    return NO;
}
</code></pre>

<p>To me, these look kinda similar yet different, hence I wanted to ask for an explanation of following questions</p>

<ol>
<li><p>When should <code>dispatch_get_main_queue</code> be added to the module and what happens if it is omitted?</p></li>
<li><p>When should <code>requiresMainQueueSetup</code> be added to the module and what happens if it is omitted?</p></li>
<li><p>Can <code>dispatch_get_main_queue</code> and <code>requiresMainQueueSetup</code> be used together, if so why and when?</p></li>
<li><p>What is the difference between returning <code>YES</code> and <code>NO</code> from <code>requiresMainQueueSetup</code>?</p></li>
</ol>
