iOS网络开发NSURLSession(二)DataTask+Demo

本文是iOS网络开发系列的第三篇,聚焦于NSURLSessionDataTask的使用和代理方法。文章通过Demo展示了如何暂停、继续和取消任务,并详细解释了NSURLSessionTask的属性和管理方法。文中探讨了两种处理DataTask结果的方式:通过block和代理方法,同时提供了具体的代码示例。
摘要由CSDN通过智能技术生成

原创blog,转载请注明出处
blog.csdn.net/hello_hwc

欢迎关注我的IOS-SDK讲解专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html


前言:
这是IOS 网络开发系列的第三篇文章,这篇文章主要介绍了NSURLSession以及NSURLSessionTask这个抽象类,和NSURLSessionDataTask的使用和代理方法。
本篇的顺序,

1. demo效果
2. NSURLSessionTask属性方法介绍
3. NSURLSessionDataTask的使用和代理方法
4. Demo的源码讲解


一 Demo效果

暂停-继续

取消


三 NSURLSessionTask

Task是由Session创建的,Session会保持对Task的一个强引用,直到Task完成或者出错才会释放。通过NSURLSessionTask可以获得Task的各种状态,以及对Task进行取消,挂起,继续等操作。一共包括三种Task,三种Task的结构如图。本文主要讲解的是DataTask。

管理task的状态的方法

- (void)cancel //取消一个task
- (void)resume //如果task在挂起状态,则继续执行task
- (void)suspend //挂起task

获得task的执行情况的属性


countOfBytesExpectedToReceive 
countOfBytesReceived
countOfBytesExpectedToSend
countOfBytesSent

task的综合信息

currentRequest // 当前活跃的request
originalRequest // 在task创建的时候传入的request(有可能会重定向)
response // 服务器对当前活跃请求的响应
taskDescription // 描述当前task
taskIdentifier // 用来区分Task的描述符
error //Task失败的错误信息

task状态的枚举

typedef NS_ENUM (NSInteger,
   NSURLSessionTaskState ) {
   NSURLSessionTaskStateRunning = 0,
   NSURLSessionTaskStateSuspended = 1,
   NSURLSessionTaskStateCanceling = 2,
   NSURLSessionTaskStateCompleted = 3,
};

四 NSURLSessionDataTask代理

DataTask是用来干嘛的呢?
用来下载数据到内存里,数据的格式是NSData
dataTask使用的过程中,有两种方式来处理结果

第一种,通过block的方式(不关注过程,只关注结果,使用简单)

举个例子
下载一幅图片,完成后显示到ImageView。下面代码看起来很简单吧。

NSURLSessionDataTask * task = [self.session dataTaskWithURL:[NSURL URLWithString:imageURL] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        if (!error) {
            UIImage * image = [UIImage imageWithData:data];
            self.imageview.image = image;
        }
    }];
    [task resume];

第二种通过代理方法来管理session和task。( 可以获得全部过程,但是较为复杂)

主要使用到三种代理中的事件
NSURLSessionDelegate用来处理Session层次的事件

Session被 invalide得到的事件
- (void)URLSession:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值