This is how I have solved it. I haven't used caching yet , but this is enough to show them properly in UITableViewCell. Here's the method I have used.
+ (void)downloadImageWithURL:(NSMutableURLRequest *)request completionBlock:(void (^)(BOOL succeeded, UIImage *image))completionBlock
{
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
int statusCode = httpResponse.statusCode ;
NSLog(@"Status Code Imageloading : %d" , statusCode);
if(statusCode == 200){
UIImage *image = [[UIImage alloc] initWithData:data];
NSLog(@"Success");
completionBlock(YES,image);
} else {
NSLog(@"Failure");
completionBlock(NO,nil);
}
}];
}