UIImage *myImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]]; - (void)downloadWorker:(NSString *)urlString { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSURL *url = [NSURL URLWithString:urlString]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *image = [[UIImage alloc] initWithData:data]; [self performSelectorOnMainThread:@selector(imageLoaded:) withObject:image waitUntilDone:YES]; [image release]; [pool drain]; } - (void)downloadImageOnThread:(NSString *)url { [NSThread detachNewThreadSelector:@selector(downloadWorker:) toTarget:self withObject:url]; } - (void)imageLoaded:(UIImage *)image { // get the image into the UI } - (void)downloadAvatar:(NSString *)URL{ NSURL *url = [[NSURL alloc] initWithString:URL]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; [url release]; NSURLDownload *download = [[NSURLDownload alloc] initWithRequest:request delegate:self]; NSString *path = [[NSString alloc] initWithFormat:@"%@data/%@.jpg",[[BFAppSupport defaultSupport] bfFolderPath],[[xfSession loginIdentity] userName]]; [download setDestination:path allowOverwrite:YES]; [download release]; [path release]; [request release]; } - (void)downloadDidFinish:(NSURLDownload *)download{ NSString *path = [[NSString alloc] initWithFormat:@"%@data/%@.jpg",[[BFAppSupport defaultSupport] bfFolderPath],[[xfSession loginIdentity] userName]]; NSData *imageData = [[NSData alloc] initWithContentsOfFile:path]; if( [imageData length] < 10 ){ [self performSelector:@selector(downloadAvatar:) withObject:@"http://media.xfire.com/xfire/xf/images/avatars/gallery/default/xfire160.jpg" afterDelay:0.0]; [imageData release]; [path release]; return; } NSImage *theImage = [[NSImage alloc] initWithData:imageData]; [imageData release]; [path release]; [yourImage setImage:theImage]; [theImage release]; } - (void)download:(NSURLDownload *)aDownload didFailWithError:(NSError *)error{ NSLog(@"Avatar url download failed"); }