La mise en œuvre de Modèle de Délégué en Objective-C

Je suis la construction d'une classe qui gère NSURLConnection demandes. Pour permettre à d'autres classes de l'utilisation de cette classe, je voudrais permettre à la classe principale à l'appel d'un délégué lorsque connectionDidFinishLoading est déclenché.

J'ai regardé par beaucoup de documentation, mais je ne peux pas trouver quelque chose qui donne des exemples clairs, et le code que j'ai à ne pas faire appel au délégué pour une raison quelconque. Le code que j'ai pour l'instant est (code non pertinentes supprimé):

Interface:

@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

Mise en œuvre:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"Fininshed Loading...");
    resultData = [self parseJSON:jsonData];

    if(delegate && [delegate respondsToSelector:@selector(urlHandler:searchResultsFinishedLoading:)]) {
        NSLog(@"Delegating!");
        [delegate urlHandler:self searchResultsFinishedLoading:resultData];
    } else {
        NSLog(@"Not Delegating. I dont know why.");
    }   

}

Le délégué à l'intérieur de l'autre classe:

- (void)urlHandler:(PDUrlhandler*)urlHandler searchResultsFinishedLoading:(NSDictionary *)resultData;
{
    NSLog(@"Delegating!!!!");
}

OriginalL'auteur pixel | 2009-01-18