AFNetworking多任务异步请求

本文介绍了一个iOS应用中实现的图片异步加载方法。通过使用AFNetworking库进行网络请求,并利用NSOperationQueue来管理并发的图片加载任务,确保了在用户交互过程中UI的良好响应性。文章详细展示了如何创建UIImageView并为其分配网络请求获取的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.m文件中:


- (void)viewDidLoad

{

    [super viewDidLoad];

    [self createUI];

}


-(void)createUI

{

    for(int i = 0;i<4;i++)

    {

        UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(064 + 104 * i, 320104)];

        imageView.tag = i + 1;

        [self.view addSubview:imageView];

    }

    

    UIBarButtonItem * item = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressBarBtn:)];

    self.navigationItem.rightBarButtonItem = item;

}


-(void)pressBarBtn:(id)sender

{

    //多个任务异步请求数据

    NSString * path1 = @"http://mp.manzuo.com/pic/act/banner_20150416144658_20150514104127.jpg";

    //<1>转化成NSURL

    NSURL * url1 = [NSURL URLWithString:path1];

    //<2>封装成请求对象

    NSURLRequest * request1 = [NSURLRequest requestWithURL:url1];

    //<3>开始异步请求

    AFHTTPRequestOperation * operation1 = [[AFHTTPRequestOperation alloc]initWithRequest:request1];

    //<4>请求结束以后 将请求的数据显示在UIImageView

    [operation1 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        UIImageView * imageView = (UIImageView *)[self.view viewWithTag:1];

        //将请求的数据转化成UIImage添加到图片视图上

        imageView.image = [UIImage imageWithData:responseObject];

        NSLog(@"request1");

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"%@",error.description);

    }];

    

    NSString * path2 = @"http://10.0.8.8/sns/attachment/201412/20/93916_1419040676yd6Q.jpg";

    //<1>转化成NSURL

    NSURL * url2 = [NSURL URLWithString:path2];

    //<2>封装成请求对象

    NSURLRequest * request2 = [NSURLRequest requestWithURL:url2];

    //<3>开始异步请求

    AFHTTPRequestOperation * operation2 = [[AFHTTPRequestOperation alloc]initWithRequest:request2];

    //<4>请求结束以后 将请求的数据显示在UIImageView

    [operation2 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        UIImageView * imageView = (UIImageView *)[self.view viewWithTag:2];

        //将请求的数据转化成UIImage添加到图片视图上

        imageView.image = [UIImage imageWithData:responseObject];

        NSLog(@"request2");

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"%@",error.description);

    }];


    

    NSString * path3 = @"http://mp.manzuo.com/pic/act/banner_20150520104032.jpg";

    //<1>转化成NSURL

    NSURL * url3 = [NSURL URLWithString:path3];

    //<2>封装成请求对象

    NSURLRequest * request3 = [NSURLRequest requestWithURL:url3];

    //<3>开始异步请求

    AFHTTPRequestOperation * operation3 = [[AFHTTPRequestOperation alloc]initWithRequest:request3];

    //<4>请求结束以后 将请求的数据显示在UIImageView

    [operation3 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        UIImageView * imageView = (UIImageView *)[self.view viewWithTag:3];

        //将请求的数据转化成UIImage添加到图片视图上

        imageView.image = [UIImage imageWithData:responseObject];

        NSLog(@"request3");

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"%@",error.description);

    }];


    

    NSString * path4 = @"http://mp.manzuo.com/pic/act/banner_20150518145310.jpg";

    //<1>转化成NSURL

    NSURL * url4 = [NSURL URLWithString:path4];

    //<2>封装成请求对象

    NSURLRequest * request4 = [NSURLRequest requestWithURL:url4];

    //<3>开始异步请求

    AFHTTPRequestOperation * operation4 = [[AFHTTPRequestOperation alloc]initWithRequest:request4];

    //<4>请求结束以后 将请求的数据显示在UIImageView

    [operation4 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        UIImageView * imageView = (UIImageView *)[self.view viewWithTag:4];

        //将请求的数据转化成UIImage添加到图片视图上

        imageView.image = [UIImage imageWithData:responseObject];

        NSLog(@"request4");

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"%@",error.description);

    }];

    

    

    //<5>将多个请求对象放在一个队列中

    NSOperationQueue * queue = [[NSOperationQueue alloc]init];

    //<6>设置队列中最大承载的请求对象的个数

    queue.maxConcurrentOperationCount = 4;

    //<7>4个请求放在队列中开始异步请求

    [queue addOperations:@[operation1,operation2,operation3,operation4] waitUntilFinished:NO];

    

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值