NSURLConnection对数据的处理方式不同可以分为2种
1、block回调
block一般针对小数据,一次性获得全部数据并返回。
+ (void)sendAsynchronousRequest:(NSURLRequest*) request
queue:(NSOperationQueue*) queue
completionHandler:(void (^)(NSURLResponse* __nullable response, NSData* __nullable data, NSError* __nullable connectionError)) handler;
这个方法会自动创建一个子线程进行网络请求,queue一般是mainQueue,请求完成之后在主线程刷新UI。
2、代理
代理通常针对文件下载,会多次调用代理方法。
NSURLConnectionDataDelegate协议中的代理方法
//将要发送请求时调用
- (nullable NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(nullable NSURLResponse *)response;
//开始接收到服务器的响应时调用
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
//接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次,一般做大文件下载)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
//服务器返回的数据完全接收完毕后调用
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;