title: Implementing Delegate Pattern in Objective-C
body: <p>I am building a class that handles NSURLConnection requests.  To allow other classes to use this class, I would like to allow the main class to call a delegate when connectionDidFinishLoading is fired.</p>
  
  <p>I've looked through lots of documentation, but I can't find anything that gives any clear examples, and the code that I have doesn't call the delegate for some reason.  The code I have so far is (code not relevant removed):</p>
  
  <p>Interface:</p>
  
  <pre><code>@interface PDUrlHandler : NSObject {
  id delegate;
  }
  - (void)searchForItemNamed:(NSString *)searchQuery;
  @property (nonatomic, assign) id delegate;
  @end
  @interface NSObject (PDUrlHandlerDelegate) 
  - (void)urlHandler:(PDUrlhandler*)urlHandler searchResultsFinishedLoading:(NSDictionary *)resultData;
  @end
  </code></pre>
  
  <p>Implementation:</p>
  
  <pre><code>- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
      NSLog(@"Fininshed Loading...");
      resultData = [self parseJSON:jsonData];
  
      if(delegate &amp;&amp; [delegate respondsToSelector:@selector(urlHandler:searchResultsFinishedLoading:)]) {
          NSLog(@"Delegating!");
          [delegate urlHandler:self searchResultsFinishedLoading:resultData];
      } else {
          NSLog(@"Not Delegating. I dont know why.");
      }   
  
  }
  </code></pre>
  
  <p>The delegate within the other class:</p>
  
  <pre><code>- (void)urlHandler:(PDUrlhandler*)urlHandler searchResultsFinishedLoading:(NSDictionary *)resultData;
  {
      NSLog(@"Delegating!!!!");
  }
  </code></pre>