//请求异步加载接口方法
+ (void)tayos_ARM:(NSString *)url tayos_complete:(void (^)(NSDictionary *resultJSON))finished
{
//异步并列执行
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
__block NSDictionary *resultJSON = nil;
//装载地址
NSURL *url_ = [NSURL URLWithString:url];
//发送接口请求
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url_];
//使用OC中新增的bolck语法(块语法),可以实现并行编程
//以下方法是在请求完成后会被调用的块
[request setCompletionBlock:^{
//如果是数据集,可以使用以下方式返回结果
NSData *responseData = [request responseData];
//数据的解析
resultJSON = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:0];
//NSLog(@">>%@",resultJSON);
}];
//如果请求失败,可以在这里进行处理
[request setFailedBlock:^{
// NSError *error = [request error];
}];
//开启一个异步请求(这里只说明了异步请求的使用,因为一般情况下的网络请求都采用异步的方式,否则会阻塞UI)
[request startAsynchronous];
//跳回主队列执行
dispatch_async(dispatch_get_main_queue(), ^{
//在主队列中进行ui操作
finished(resultJSON);
});
});
}
//网络异步加载图像
+ (void)imageDownLoadByUrlASYNC:(NSString *)url Complete:(void (^)(UIImage *image))finished
{
//异步并列执行
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImage *image = nil;
NSURL *myUrl = [NSURL URLWithString:url];
// NSData *responseData = [NSData dataWithContentsOfURL:myUrl];
NSError *error;
NSData *responseData = [NSData dataWithContentsOfURL:myUrl options:NSDataReadingMappedIfSafe error:&error];
image = [UIImage imageWithData:responseData];
//跳回主队列执行
dispatch_async(dispatch_get_main_queue(), ^{
//在主队列中进行ui操作
finished(image);
});
});
}
/* 网络异步加载图像 - 实现 */
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 50, 50)];
//异步加载图片
[Tayos_ASIHttpRequestXtras imageDownLoadByUrlASYNC:@"http://s1.lashouimg.com/zt/201110/27/131972321636938600.jpg" Complete:^(UIImage * image){
if (image) {
imageView.image = image;
}else {
imageView.image = [UIImage imageNamed:@"page_image_loading.png"];
}
}];
[self.view addSubview:imageView];