title: Caching not working with custom NSURLProtocol
body: <p>I am trying to make a subclass to NSURLProtocol. However, I am noticing that I seem to lose caching functionality when I register my subclass, even though it shouldn't do anything. For example, if I do [NSURLConnection sendSynchronousRequest...] multiple times to the same URL without registering the subclass, it only performs one actual http request. With this subclass registered, it performs a network request every time.</p>
  
  <p>Here is my code: </p>
  
  <pre><code>@interface CustomURLProtocol : NSURLProtocol
  @property (nonatomic, strong) NSURLConnection *connection;
  @end
  
  @implementation CustomURLProtocol
  
  + (BOOL)canInitWithRequest:(NSURLRequest *)request {
      return [[[request URL] scheme] isEqualToString:@"http"] &amp;&amp;
             [NSURLProtocol propertyForKey:@"tagged" inRequest:request] == nil;
  }
  
  + (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
      return request;
  }
  
  - (void)startLoading {
      NSMutableURLRequest *newRequest = [self.request mutableCopy];
      [NSURLProtocol setProperty:@YES forKey:@"tagged" inRequest:newRequest];
      self.connection = [NSURLConnection connectionWithRequest:newRequest delegate:self];
  }
  
  - (void)stopLoading {
      [self.connection cancel];
  }
  
  - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
      [[self client] URLProtocol:self didLoadData:data];
  }
  
  - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
      [[self client] URLProtocol:self didFailWithError:error];
      self.connection = nil;
  }
  
  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
      [[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:[[self request] cachePolicy]];
  }
  
  - (void)connectionDidFinishLoading:(NSURLConnection *)connection  {
      [[self client] URLProtocolDidFinishLoading:self];
      self.connection = nil;
  }
  @end
  </code></pre>