#import "UIImageView+WebCach.h"
@implementation UIImageView (WebCach)
- (void)setImageWithURL:(NSURL *)url {
//-----------------NSURLConnection同步请求-----------------------
//使用同步请求
// NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
// [request setHTTPMethod:@"GET"];
// [request setURL:url];
// [request setTimeoutInterval:60];
//
// NSURLResponse *response;
// //发送同步请求
// NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
//
// UIImage *image = [UIImage imageWithData:data];
//
// self.image = image;
//-----------------NSURLConnection异步请求-----------------------
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setHTTPMethod:@"GET"];
[request setURL:url];
[request setTimeoutInterval:60];
//发送异步请求
// [NSURLConnection connectionWithRequest:request delegate:self];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//发送异步请求
[NSURLConnection sendAsynchronousRequest:request
queue:queue
completionHandler:^(NSURLResponse* respone, NSData* data, NSError* error){
//该block是多线程调用的
UIImage *image = [UIImage imageWithData:data];
// [self performSelectorOnMainThread:@selector(<#selector#>) withObject:<#(id)#> waitUntilDone:<#(BOOL)#>];
//跳到主线程上去操作UI
dispatch_async(dispatch_get_main_queue(), ^{
self.image = image;
});
}];
}
---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// 还有一种实现异步请求的方式, 通过实现以下四个代理方法:
9./**
10. *
11. *实现必要的方法
12. **/
13.
14.
15.// -------------------------------------------------------------------------------
16.// connection:didReceiveResponse:response 通过response的响应,判断是否连接存在
17.// -------------------------------------------------------------------------------
18.-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
19.
20.}
24.// connection:didReceiveData:data,通过data获得请求后,返回的数据,数据类型NSData
25.// -------------------------------------------------------------------------------
26.-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
31.}
33.// connection:didFailWithError:error 返回的错误信息
36.-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
37.
38.}
40.// connectionDidFinishLoading:connection 数据请求完毕,这个时候,用法是多线程的时候,通过这个通知,关部子线程
41.// -------------------------------------------------------------------------------
42.-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
43.
44.}
@end