iOS中下载小文件

来源:互联网 发布:深圳国税登录网络异常 编辑:程序博客网 时间:2024/05/01 13:52

在iOS中通过网络下载小文件比如小型图片等资源,一般在子线程中将数据完全下载完毕,然后在调用block将下载的数据整个部分返回,或者采用同步返回下载数据。
一般采用以下两种方式:
(1)使用GCD将下载操作放入子线程队列中去,使用data自带的方法:默认使用get请求,同步获取下载返回数据。
- (void)downLoadFile {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@”http://localhost:8080/MJServer/resources/images/minion_01.png“]];
NSData *data = [NSData dataWithContentsOfURL:url];
NSLog(@”%ld”, data.length);

});

}
(2)使用NSURLConnetion方法来建立下载链接,在主线程中处理返回的数据
- (void)downLoadFile2 {
NSURL *url = [NSURL URLWithString:@”http://localhost:8080/MJServer/resources/images/minion_01.png“];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
NSLog(@”%ld”, data.length);
}];
}
在创建多线程中使用了两种方式:
(1)GCD获取全局线程队列,以代码块的方式将操作放入到全局线程队列中,这样就直接会在下载操作完成后,将回调放入到全局线程队列中的操作。这种方式,是将操作直接塞入全局线程队列,因此无法对操作进行定制化处理。
(2)使用NSOperation方式来处理多线程中任务的创建如塞入队列
[NSOperationQueue mainQueue];获取主线程队列
然后将下载完毕的数据以代码块的方式塞入到主线程队列中,进行回调处理。

1 0
原创粉丝点击