ios-网络-ASIHTTPRequest并且设置缓存
1.同步请求 ASIHTTPRequest*request= [ASIHTTPRequest requestWithURL:url]; [request setRequestMethod:@"GET"]; [request setTimeOutSeconds:50]; [request startSynchronous]; NSError *error=request.error; if (error==nil) { NSData *data= request.responseData; UIImage*image= [UIImage imageWithData:data]; self.image=image; }else{ NSLog(@"请求出错"); }
2.异步请求 -(void)setImageURL:(NSURL *)url{ ASIHTTPRequest*request= [ASIHTTPRequest requestWithURL:url]; [request setRequestMethod:@"GET"]; [request setTimeOutSeconds:50]; request.delegate=self;//这个是与同步请求不一样的地方 [request startAsynchronous]; } - (void)requestFinished:(ASIHTTPRequest *)request{ NSData*imagedata= request.responseData; UIImage *image= [UIImage imageWithData:imagedata]; self.image=image; //监听还是主线程,所以不用跳 } - (void)requestFailed:(ASIHTTPRequest *)request{ NSLog(@"%@失败",request.error); }
-(void)setImageURL:(NSURL *)url{ ASIHTTPRequest*request= [ASIHTTPRequest requestWithURL:url]; [request setRequestMethod:@"GET"]; [request setTimeOutSeconds:50]; [request setCompletionBlock:^{ NSData*imagedata= request.responseData; UIImage *image= [UIImage imageWithData:imagedata]; self.image=image; }]; [request startAsynchronous]; } 这个异步请求就没有设置代理,其代理方法用一个block代替了,每个代理方法都对应一个block
CFNetwork SystemConfiguration MobileCoreServices libz libxml2,用这个框架需要依赖这5个库
最好用代理,不用block,虽然block是我的最爱,好像block会被重复相互抢引用而释放不了
ASIDownloadCache *cache=[[ASIDownloadCache alloc]init];//创建一个缓存对象 NSString * storecache=[NSHomeDirectory() stringByAppendingString:@"/Documents"];//设置沙盒下面的一个路径 [cache setStoragePath:storecache];//设置缓存的存储路径 [cache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy];//设置缓存策略,只有不存在的时候才从网络上下载 request.cacheStoragePolicy=ASICacheForSessionDurationCacheStoragePolicy;//设置这个缓存的请求策略,这个策略是绘画级别的,下次绘画会清空 [request setDownloadCache:cache];//将这个缓存添加到这个请求
//这个缓存好像在ios8里面不能用,没效果,缓存必须用post,get不顶用
1.这里只记录一些学习笔记
2.这里只记录一些学习心得,如果心得方向有错,请留言
2.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)