title: NSDefaultRunLoopMode vs NSRunLoopCommonModes
body: <p>Whenever I try to download a big file behind <code>UIScrollView</code>, <code>MPMapView</code> or something, the downloading process gets halted as soon as I touch iPhone screen. Thankfully, an awesome blog post by <a href="http://www.pixeldock.com/blog/how-to-avoid-blocked-downloads-during-scrolling/" rel="noreferrer">Jörn</a> suggests an alternative option, using <code>NSRunLoopCommonModes</code> for connection. </p>
  
  <p>That gets me look into detail of the two modes, NSDefaultRunLoopMode and NSRunLoopCommonModes, but the apple document does not kindly explain, other than saying</p>
  
  <p>NSDefaultRunLoopMode</p>
  
  <blockquote>
    <p>The mode to deal with input sources other than NSConnection objects.
    This is the most commonly used run-loop mode.</p>
  </blockquote>
  
  <p>NSRunLoopCommonModes</p>
  
  <blockquote>
    <p>Objects added to a run loop using this value as the mode are monitored by all run loop modes that have been declared as a member of the set of “common" modes; see the description of CFRunLoopAddCommonMode for details.</p>
  </blockquote>
  
  <p>CFRunLoopAddCommonMode</p>
  
  <blockquote>
    <p>Sources, timers, and observers get registered to one or more run loop modes and only run when the run loop is running in one of those modes. Common modes are a set of run loop modes for which you can define a set of sources, timers, and observers that are shared by these modes. Instead of registering a source, for example, to each specific run loop mode, you can register it once to the run loop’s common pseudo-mode and it will be automatically registered in each run loop mode in the common mode set. Likewise, when a mode is added to the set of common modes, any sources, timers, or observers already registered to the common pseudo-mode are added to the newly added common mode.</p>
  </blockquote>
  
  <p>Can anyone please explain the two in human language? </p>