title: When should we use run loop recursively in IOS?
body: <p>I read the "IOS Developer Library" about the "Run Loops" theme, in the article, one sentence says "It is possible to run a run loop recursively". My question is in which scenario should use the recursive run loop please?</p>
  
  <p>My another question is about the statement "The purpose of a run loop is to keep your thread busy when there is work to do and put your thread to sleep when there is none.". How can a run loop sleep, can the main thread's run loop sleep when no event comes? What about the second thread's situation? </p>
  
  <p>one example of the nested run loop that I found from Internet is that like 
  below: </p>
  
  <pre><code> [NSThread detachNewThreadSelector:@selector(runOnNewThread) toTarget:self withObject:nil]; 
   while (!end) {
      NSLog(@”runloop…”);
      [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
      NSLog(@”runloop end.”);
   }
  </code></pre>
  
  <p>The current thread will be blocked until the work in another thread has finished. But why this happen, how the current thread can be blocked?<br>
  Can anyone answer my question?                              </p>