title: NSURLConnection needs a NSRunLoop to execute?
body: <p>I'm trying to fetch the contents of a URL from a method called connect.  It reads its configuration settings and attempts to fetch the URL.  It appears to need the run loop to execute.  I though it would just execute once and be done.  It seems that I don't need to have that run loop running for any reason other than to fetch this URL once, whenever connect is called.  Is there a better way do do this?</p>
  
  <pre><code>- (BOOL) connect 
  {
      // read serverName and eventId from preferences
      NSMutableArray* preferences;
      preferences = [NSMutableDictionary dictionaryWithContentsOfFile:@"/tmp/wt.plist"];
  
      // if these values aren't nil or blank
      if ([preferences valueForKey:@"serverAddress"] &amp;&amp; [preferences valueForKey:@"eventId"]) {
  
          [self setServerAddress:@"172.16.28.210"];
          [self setEventId:@"OT-3037009"];
      } else{
          // return some kind of error message
      }
  
      NSLog(@"VideoDataURL: %@", [self getVideoDataURL]);
  
      // grab the URL and query the server
  
      NSURL *myURL = [NSURL URLWithString:@"http://localhost"];
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL
                                                             cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                         timeoutInterval:2];
  
      __unused NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
  
      [[NSRunLoop currentRunLoop] run];
  
      return TRUE;
  }
  
  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
  {
      // This method is called when the server has determined that it
      // has enough information to create the NSURLResponse.
  
      // It can be called multiple times, for example in the case of a
      // redirect, so each time we reset the data.
  
      // receivedData is an instance variable declared elsewhere.
      [incomingData setLength:0];
  }
  
  - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
  {
      /* 
       * Called each time a chunk of data arrives
       */
  
      NSLog(@"received %lu bytes", [data length]);
  
      // Create a mutable data if it doesn't already exist
      if (!incomingData) {
          incomingData = [[NSMutableData alloc] init];
      }
  
      [incomingData appendData:data];
  }
  
  - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
  {
      /*
       * Called if the connection fails
       */
  
      NSLog(@"connection failed: %@", [error localizedDescription]);  
      incomingData = nil;
  }
  
  - (void)connectionDidFinishLoading:(NSURLConnection *)connection 
  {
      /*
       * Called when the last chunk has been processed
       */
  
      NSLog(@"Got it all!");
  
      NSString *string = [[NSString alloc] initWithData:incomingData encoding: NSUTF8StringEncoding];
  
      incomingData = nil;
  
      NSLog(@"response is: %@", string);
  }
  </code></pre>