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;
}
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]];
}