NSURLConnection Asynchronous

tatouille

Membre expert
1 Juin 2004
5 174
493
Stanford CA
Bloc de code:
@implementation HttpRequest
...
- (void)start
if (nil == (connection = [[NSURLConnection allocWithZone:[self zone]]  initWithRequest:request delegate:self startImmediately:YES])) {
            NSLog(@"HttpRequest: Connection can't be initialized");  
        }

...

- (void)connectionDidFinishLoading:(NSURLConnection *)connection  
{  
    [[NSNotificationCenter defaultCenter] postNotificationName:@"HttpRequest_ConnectionDidFinishLoading" object:self];  
    [connection release];  
} 

@end

simpledeamon.m


int main(int argc, char *argv[]) {
    NSAutoreleasePool *pool;
    HttpRequest *request;
    
    pool = [[NSAutoreleasePool alloc] init];
    request = [[HttpRequest alloc] initWithURL:[NSURL URLWithString:@"http://toto.com"]];
     [request setAsynchronous:YES];
     
     [[NSNotificationCenter defaultCenter] addObserver:request
        selector:@selector()
        name:@"ConnectionDidFinishLoading_Observer" object:nil];
    
    NSLog(@"%@ ", [request responseData]);
     
     CFRunLoopRun();
 
     
     [request release];
     
     [pool drain];
     
     return 0;
}
voila quand je delegate ca a autre object tout fonctionne bien comme une view ecetera,
j'ai une autre method pour initialiser un delegate et un selector autre que self, mais comment on observe dans un simple deamon, je n'arrive pas a get la notification donc je ne peux pas imprimer mes data, il y a quelque chose qui me manque dans la doc ils disent que c'est renvoye sur le mainThread donc theoriquement je peux recevoir ma notification sans observer?, l'exemple si dessus est apres des tas de tests

comment dans un simple bidule on obtient le meme resultat que si on delegate sur une view? si quelqu 'un peut m'expliquer ce truc

-(void)sendConnectionFinishLoadingNotification
{
[[NSRunLoop currentRunLoop] performSelector:aSelector
target:aDelegate argument:self order:0 modes:[NSArray arrayWithObjects:NSDefaultRunLoopMode, nil]];
}
 
  • J’aime
Réactions: p4bl0